diff -Nrc2 bash-2.05/AUTHORS bash-2.05a/AUTHORS *** bash-2.05/AUTHORS Fri Jan 3 17:02:53 1997 --- bash-2.05a/AUTHORS Wed Jul 11 10:38:49 2001 *************** *** 154,159 **** lib/glob/ChangeLog Brian Fox, Chet Ramey lib/glob/Makefile.in Brian Fox, Chet Ramey ! lib/glob/fnmatch.c Roland McGrath, Brian Fox, Chet Ramey ! lib/glob/fnmatch.h Roland McGrath, Brian Fox, Chet Ramey lib/glob/glob.c Richard Stallman, Roland McGrath, Brian Fox, Chet Ramey lib/glob/glob.h Chet Ramey --- 154,159 ---- lib/glob/ChangeLog Brian Fox, Chet Ramey lib/glob/Makefile.in Brian Fox, Chet Ramey ! lib/glob/strmatch.c Roland McGrath, Brian Fox, Chet Ramey ! lib/glob/strmatch.h Roland McGrath, Brian Fox, Chet Ramey lib/glob/glob.c Richard Stallman, Roland McGrath, Brian Fox, Chet Ramey lib/glob/glob.h Chet Ramey diff -Nrc2 bash-2.05/CHANGES bash-2.05a/CHANGES *** bash-2.05/CHANGES Tue Apr 3 10:33:50 2001 --- bash-2.05a/CHANGES Wed Nov 7 17:00:53 2001 *************** *** 1,2 **** --- 1,532 ---- + This document details the changes between this version, bash-2.05a-release, + and the previous version, bash-2.05a-rc1. + + 1. Changes to Bash + + a. Fixed the `printf' builtin so that the variable name supplied as an + argument to a %n conversion must be a valid shell identifier. + + b. Improved the random number generator slightly. + + c. Changes to configuration to not put -I/usr/include into $CFLAGS, since + it messes up some includes. + + d. Corrected description of POSIXLY_CORRECT in man page and info manual. + + e. Fixed a couple of cases of incorrect function prototypes that sneaked + through and caused compilation problems. + + f. A few changes to avoid potential core dumps in the programmable completion + code. + + g. Fixed a configure problem that could cause a non-existent file to show + up in LIBOBJS. + + h. Fixed a configure problem that could cause siglist.o to not be built when + required. + + i. Changes to the strtoimax and strtoumax replacement functions to work + around buggy compilers. + + j. Fixed a problem with the snprintf replacement function that could + potentially cause a core dump. + + 2. Changes to Readline + + a. Fixed a locale-specific problem in the vi-mode `goto mark' command. + + b. Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause + include file problems. + + ------------------------------------------------------------------------------ + This document details the changes between this version, bash-2.05a-rc1, + and the previous version, bash-2.05a-beta1. + + 1. Changes to Bash + + a. Fixed the snprintf replacement to correctly implement the `alternate form' + of the %g and %G conversions. + + b. Fixed snprintf to correctly handle the optional precision with the %g and + %G conversions. + + c. Fixed the arithmetic evaluation code to correct the values of `@' and `_' + when translating base-64 constants (they were backwards). + + d. New library functions for formatting long and long long ints. + + e. Fixed a few places where negative array subscripts could have occurred, + mostly as the result of systems using signed characters. + + f. Fixed a few places that assumed a pid_t was no wider than an int. + + g. Fixed the `maildir' mail checking code to work on systems where a + `struct stat' doesn't include an `st_blocks' member. + + h. Fixed snprintf to make `unsigned long long' conversion formats (%llu) + work better. + + i. Fixed snprintf to not print a sign when asked to do an unsigned conversion. + + j. Made configure changes to avoid compiling empty source files in lib/sh. + + k. New replacement functions (if necessary) for strtoull, strtoll, strtoimax, + strtoumax. + + l. The `printf' builtin now handles the `ll' and `j' length modifiers + directly, since they can affect the type and width of the argument + passed to printf(3). + + m. Renamed a number of the bash-specific autoconf macros in aclocal.m4 to + have more sytematic naming, with accompanying changes to configure.in. + + n. Fixed snprintf to handle long doubles and the %a/%A conversions by + falling back to sprintf, as long as sprintf supports them. + + o. Fixed return value from vsnprintf/snprintf to be the number of characters + that would have been printed, even if that number exceeds the buffer + size passed as an argument. + + p. Bash no longer attempts to define its own versions of some ctype macros + if they are implemented as functions in libc but not as macros in + . + + q. Changed the variable printing code (used by `set', `export', etc.) to + not use the $'...' syntax when in posix mode, since that caused + interoperability problems with other shells (most notably with autoconf). + When not in posix mode, it uses $'...' if the string to be printed + contains non-printing characters and regular single quotes otherwise. + + r. snprintf now recognizes the %F conversion. + + s. Fixed a bug that could cause the wrong status to be returned by a shell + function when the shell is compiled without job control and a null + command containing a command substutition was executed in the function. + + t. When in posix mode, the default value for MAILCHECK is 600. + + u. Bash only initializes FUNCNAME, GROUPS, and DIRSTACK as special variables + if they're not in the initial environment. + + v. If SECONDS appears in the initial environment with a valid integer value, + bash uses that as the starting value, as if an assignment had been + performed. + + w. Bash no longer auto-exports HOME, PATH, SHELL, or TERM, even though it + gives them default values if they don't appear in the initial environment. + + x. Bash no longer auto-exports HOSTNAME, HOSTTYPE, MACHTYPE, or OSTYPE, + even if it assigns them default values. + + y. Bash no longer removes the export attribute from SSH_CLIENT or SSH2_CLIENT + if they appear in the initial environment. + + z. Bash no longer attempts to discover if it's being run by sshd in order to + run the startup files. If the SSH_SOURCE_BASHRC is uncommented in + config-top.h it will attempt to do so as previously, but that's commented + out in the distributed version. + + aa. Fixed a typo in the code that tests for LC_NUMERIC. + + bb. The POSIXLY_CORRECT shell variable and its effects are now documented. + + cc. Some changes to several of the support shell scripts included in the + definitions to try to avoid race conditions and attacks. + + dd. Several changes to avoid warnings from `gcc -Wall'. + + ee. Fixed a problem with the `unset' builtin that could cause incorrect + results if asked to unset a variable and an array subscript in the + same command. + + ff. A few changes to the shell's temporary file creation code to avoid + potential file descriptor leaks and to prefer the system's idea of + the temporary directory to use. + + gg. Fixes to build with the C alloca in lib/malloc/alloca.c if the system + requires it but the shell has been configured --without-bash-malloc. + + hh. Updated the documentation to note that only interactive shells resend + SIGHUP to all jobs before exiting. + + ii. Fixes to only pass unquoted tilde words to tilde_expand, rather than + rely on tilde_expand or getpwnam(3) to handle the quotes (MacOS 10.x + will remove backslashes in any login name passed to getpwnam(3)). + + jj. Small change from Paul Eggert to make LINENO right in commands run with + `bash -c'. + + 2. New Features in Bash + + a. The `printf' builtin now handles the %a and %A conversions if they're + implemented by printf(3). + + b. The `printf' builtin now handles the %F conversion (just about like %f). + + c. The `printf' builtin now handles the %n conversion like printf(3). The + corresponding argument is the name of a shell variable to which the + value is assigned. + + 3. Changes to Readline + + a. Fixed a few places where negative array subscripts could have occurred. + + b. Fixed the vi-mode code to use a better method to determine the bounds of + the array used to hold the marks. + + c. Fixed the defines in chardefs.h to work better when chars are signed. + + d. Fixed configure.in to use the new names for bash autoconf macros. + + e. Readline no longer attempts to define its own versions of some ctype + macros if they are implemented as functions in libc but not as macros in + . + + f. Fixed a problem where rl_backward could possibly set point to before + the beginning of the line. + + ------------------------------------------------------------------------------ + This document details the changes between this version, bash-2.05a-beta1, + and the previous version, bash-2.05a-alpha1. + + 1. Changes to Bash + + a. Fixed a bug in the evalution of arithmetic `for' statements when the + expanded expression is NULL. + + b. Fixed an unassigned variable problem in the redirection printing code. + + c. Added more prototypes to extern function declarations in the header + files and to static function declarations in C source files. + + d. Make sure called functions have a prototype in scope, to get the arguments + and return values right instead of casting. Removed extern function + declarations from C source files that were already included in header + files. + + e. Changed some function arguments to use function typedefs in general.h so + the prototypes can be checked. The only use of Function and VFunction + now is for unwind-protects. + + f. More const changes to function arguments and appropriate variables. + + g. Changed the mail checking support to handle `maildir'-style mail + directories. + + h. Augmented the bash malloc to pass in the file and line number information + for each malloc, realloc, and free. This should result in better error + messages. + + i. The `old' gnu malloc is no longer a configuration option. + + j. Augmented the bash malloc with optional tracing and registering allocated + and freed memory. + + k. Prompt string decoding now saves and restores the value of $? when it + expands the prompt string, so command substitutions don't change $?. + + i. Array indices are now `long', since shell arithmetic is performed as long, + and the internal arrayind_t type is used consistently. + + j. Some more `unsigned char *' fixes from Paul Eggert. + + k. Fixed a bad call to builtin_error that could cause core dumps when making + local variables. + + l. `return' may no longer be used to terminate a `select' command, for + compatibility with ksh. + + m. Changed code that reads octal numbers to do a better job of detecting + overflows. + + n. The time formatting code no longer uses absolute indices into a buffer, + because the buffer size changes depending on the size of a `time_t'. + + o. `umask' now prints four digits when printing in octal mode, for + compatibility with other shells. + + p. Lots of changes to the `printf' builtin from Paul Eggert: it handles `L' + formats and long doubles better, and internal functions have been + simpified where appropriate. + + q. Some `time_t' fixes for machines were a time_t is bigger than a long. + + r. Replaced some bash-specific autoconf macros with standard equivalents. + + s. Improvmed the code that constructs temporary filenames to make the + generated names a bit more random. + + t. Added code that checks for ascii before calling any of the is* ctype + functions. + + u. Changed some places where a `char' was used as an array subscript to use + `unsigned char', since a `char' can be negative if it's signed by default. + + v. Lots of changes to the `ulimit' builtin from Paul Eggert to add support + for the new POSIX-200x RLIM_SAVED_CUR and RLIM_SAVED_MAX values and + simplify the code. + + w. `ulimit' now prints the description of a resource in any error message + relating to fetching or setting that resource's limits. + + x. The `snprintf' replacement now computes maximum values at compile + time rather than using huge constants for things like long long. + + y. Interactive shells now ignore `set -n'. + + z. Changed the malloc bookkeeping information so that it's now 8 bytes + instead of 12 on most 32-bit machines (saving 4 bytes per allocation), + restoring 8-byte alignment. + + aa. The malloc error reporting code now attempts to print the file and line + number of the call that caused the error. + + bb. Changed the redirection error reporting code to catch EBADF errors and + report the file descriptor number rather than the file being redirected + to or from (e.g., things like `exec 4242 alias -- -x='chmod a-x' ! 13. There was a bug in bash-1.14 and previous versions that caused it to ! accept as valid syntax for loops of the form ! ! for f in ; do ... ; done ! ! This should be a syntax error, and bash-2.x treats it as such. ! ! 14. The behavior of range specificiers within bracket matching expressions in the pattern matcher (e.g., [A-Z]) depends on the current locale, specifically the value of the LC_COLLATE environment variable. Setting --- 135,139 ---- alias -x='chmod a-x' --> alias -- -x='chmod a-x' ! 13. The behavior of range specificiers within bracket matching expressions in the pattern matcher (e.g., [A-Z]) depends on the current locale, specifically the value of the LC_COLLATE environment variable. Setting *************** *** 184,188 **** Users may put the above command into their own profiles as well, of course. ! 15. Bash versions up to 1.14.7 included an undocumented `-l' operator to the `test/[' builtin. It was a unary operator that expanded to the length of its string argument. This let you do things like --- 179,183 ---- Users may put the above command into their own profiles as well, of course. ! 14. Bash versions up to 1.14.7 included an undocumented `-l' operator to the `test/[' builtin. It was a unary operator that expanded to the length of its string argument. This let you do things like *************** *** 199,200 **** --- 194,205 ---- should) use ${#variable} to get the length of a variable's value. Bash-2.x does not support it. + + 15. Bash no longer auto-exports the HOME, PATH, SHELL, TERM, HOSTNAME, + HOSTTYPE, MACHTYPE, or OSTYPE variables. + + 16. Bash no longer initializes the FUNCNAME, GROUPS, or DIRSTACK variables + to have special behavior if they appear in the initial environment. + + 17. Bash no longer removes the export attribute from the SSH_CLIENT or + SSH2_CLIENT variables, and no longer attempts to discover whether or + not it has been invoked by sshd in order to run the startup files. diff -Nrc2 bash-2.05/CWRU/changelog bash-2.05a/CWRU/changelog *** bash-2.05/CWRU/changelog Fri Apr 6 15:14:31 2001 --- bash-2.05a/CWRU/changelog Thu Nov 8 08:17:53 2001 *************** *** 1,10041 **** ! 12/23/1996 ! ---------- ! [bash-2.0 released] - 12/27 - ----- configure.in ! - don't automatically use GNU malloc on FreeBSD, the builtin one ! is supposed to be better (but doesn't have the debugging hooks) ! builtins/exec.def ! - check that full_pathname(command) doesn't return NULL because of ! inaccessible parent directories ! support/config.sub ! - recognize OpenBSD ! execute_cmd.c ! - broke the code that opens a file for output redirection when in ! noclobber mode out into a separate function: noclobber_open(). ! This tries to avoid race conditions and file replacement between ! stat(2) and open(2) ! subst.c ! - make sure pat_subst does not run off the end of its return ! string when copying the unmatched portion of the input string ! 12/30 ! ----- ! doc/Makefile.in ! - don't install readline.3 by default ! lib/tilde/tilde.c ! - removed an unnecessary check for string[i] being non-null in ! tilde_find_suffix ! 12/31 ! ----- ! support/config.{sub,guess} ! - merged in changes from config.sub in autoconf-2.12 distribution ! lib/readline/readline.c ! - in rl_newline, only call _rl_vi_done_inserting and _rl_vi_reset_last ! if readline is currently in vi mode ! lib/readline/display.c ! - corrected a misuse of inv_lbreaks where vis_lbreaks was wanted in ! the code that decides whether the cursor is at the beginning of ! an otherwise-empty line ! 1/2/1997 ! -------- ! support/bashbug.sh ! - fixed a typo, thanks to eggert@twinsun.com ! aclocal.m4 ! - new test, BASH_STRUCT_DIRENT_D_FILENO, testing for d_fileno member ! of struct dirent ! configure.in ! - call BASH_STRUCT_DIRENT_D_FILENO ! config.h.in ! - new #define for STRUCT_DIRENT_HAS_D_FILENO ! lib/posixheaders/posixdir.h ! - only define d_fileno as d_ino if STRUCT_DIRENT_HAS_D_INO is defined ! and STRUCT_DIRENT_HAS_D_FILENO is not defined. This fixed the ! problem of compiling getcwd.c on SunOS4.1.4 with cc ! 1/3 ! --- ! lib/readline/complete.c ! - fix a memory-used-after-freed bug reported by Andreas Schwab ! configure.in ! - call BASH_CHECK_SOCKLIB only if getpeername is not found in libc ! (ac_cv_func_getpeername = no) ! 1/13 ---- ! builtins/getopt.h ! - change #define guard to _SH_GETOPT_H to avoid similar guards in ! /usr/include/getopt.h (Dec OSF/1 4.x, for example) ! variables.h ! - fix assign_array_from_string so that it rejects attempts to assign ! to readonly variables ! subst.c ! - fix verify_substring_values to handle offsets that are past the ! end or before the beginning (in the case of a negative offset) ! of the expanded variable value ! 1/14 ! ---- ! bashline.c ! - fix a problem where any completion after a `cmd` command ! substitution would inappropriately attempt command completion, ! even if the previous command substitution was correctly closed ! builtins/evalstring.c ! - unwind_protect remember_on_history even if the shell is not ! interactive, since history can now be used in scripts, and ! `source' will turn off interactive_shell before calling ! parse_and_execute ! jobs.c ! - new function get_job_by_pid(pid, block) to translate a pid to ! a job number. The block argument says whether or not to block ! SIGCHLD ! jobs.h ! - new extern declaration for get_job_by_pid ! builtins/jobs.def ! - call get_job_by_pid if an argument appears to be a pid rather ! than a jobspec ! configure.in ! - configure --without-gnu-malloc automatically on MachTen 4.x ! builtins/cd.def ! - change to mindist() so that a best guess of `.' returns 3, ! which means not reasonable ! ! lib/posixheaders/memalloc.h ! - changed hpux_9 to __hpux, since the new config stuff doesn't ! define hpux_9 ! subst.c ! - fix parameter_brace_patsub to handle null patterns (doesn't ! do anything) ! oslib.c ! - slight change to bzero replacement ! support/bashbug.sh ! - changed TEMP to be /tmp/bbug.$$ as a sop to systems with 14-char ! file names ! doc/bashref.texi ! - add note to POSIX Mode section that the output of `set' when ! invoked without arguments is sorted when in POSIX mode ! 1/15 ! ---- ! support/recho.c ! - a couple of changes prompted by a `gcc -Wall' ! subst.c ! - changed ASSIGN_RETURN macro to use the do...while(0) idiom to ! avoid problems with its multiple statements ! builtins/setattr.def ! - a bad identifier given to readonly or export without an assignment ! statement (e.g. `readonly a[5]') is an error, but not an assignment ! error (i.e., return EXECUTION_FAILURE rather than EX_BADASSIGN) ! ! tests/{{array,new-exp}.,tilde-}tests ! - added `set +o posix' at the beginning to disable POSIX mode, which ! causes some of the tests to fail. Some systems (e.g. LINUX-FT), ! set POSIXLY_CORRECT by default ! ! tests/test-tests ! - added a warning if $UID is 0 to the effect that the test suite ! should not be run as root ! - worked around the `noread' and `nowrite' tests failing when run ! as root ! test.c ! - began removing the remains of the STANDALONE code, since test is ! included in GNU shellutils ! 1/16 ! ---- ! lib/readline/{readline,display}.c ! - a couple of slight changes to build on Win95 using djgpp (reported ! by x-aes@telelogic.se) ! Makefile.in ! - changed TERMCAP_LIBDIR to TERM_LIBDIR, so building the termcap ! library (if necessary) should work now ! bashline.c ! - new function: quote_word_break_characters(), to backslash-quote ! characters in a filename that the readline completion code would ! treat as word breaks ! - change bash_quote_filename to call quote_word_break_characters if ! the completion quoting style says to use backslashes ! - add `:' to rl_filename_quote_characters, since it's part of ! filename_word_break_characters ! ! lib/posixheaders/posixjmp.h ! - new file, with half of bashjmp.h ! - posixjmp.h and lib/readline/posixjmp.h are symlinks to this file ! ! bashjmp.h ! - include "posixjmp.h" for possible redefinitions of setjmp/longjmp ! and procenv_t ! 1/17 ! ---- ! shell.c ! - bad options now cause the standard shell usage message (a subset ! of what `bash --help' prints) to be displayed on stderr ! trap.c ! - don't free the trap command for a DEBUG trap in ! restore_default_signal if SIG_INPROGRESS is set -- there's already ! a pointer saved to the old value in _run_trap_internal. This ! makes bashdb run better, too ! examples/bashdb/bashdb.{pre,fns} ! - a couple of minor fixes; it actually has a chance of working now ! 1/21 ! ---- ! config.h.in ! - add a define for , HAVE_DLFCN_H ! configure.in ! - look for , define HAVE_DLFCN_H if found ! builtins/enable.def ! - include only if HAVE_DLFCN_H is defined ! lib/readline/display.c ! - renamed clear_to_eol to _rl_clear_to_eol and made it global, so ! other library files (readline.c) can use it ! - new function _rl_clear_screen, to clear the screen with the right ! termcap escape sequence ! lib/readline/readline.c ! - call _rl_clear_to_eol and _rl_clear_screen instead of using tputs ! - extern declarations for _rl_clear_to_eol and _rl_clear_screen ! 1/22 ! ---- ! mailcheck.c ! - fixed a problem in make_default_mailpath() where a slash was not ! added between the default mail directory and the username ! 1/23 ! ---- ! stringlib.c ! - added a fourth parameter to ansicstr: the length of the returned ! string ! externs.h ! - changed declaration of ansicstr ! parse.y ! - changed call to ansicstr -- saves a call to strlen ! builtins/echo.def ! - changed call to ansicstr ! - if do_v9 is non-zero, use putchar to output the string instead ! of printf, since there may be embedded NULL characters ! ! doc/{bash.1,bashref.texi}, builtins/trap.def ! - modified the `trap' documentation to make it clearer that trap ! takes multiple signal specs as arguments ! ! jobs.c, nojobs.c, jobs.h ! - renamed initialize_jobs to initialize_job_control, added an ! argument (force) ! jobs.c ! - set shell_tty to fileno(stderr) in initialize_job_control if ! the shell is not interactive. This fixes the problem of bad ! tty pgrps when monitor mode is turned on in a non-interactive ! shell ! ! sig.c ! - made initialize_terminating_signals do only that; moved the rest ! of the code that used to be there into a new function: ! initialize_shell_signals, which calls initialize_terminating_signals ! if the shell is interactive ! - initialize_terminating_signals is now extern ! - made reset_terminating_signals return immediately if ! termsigs_intitialized is zero, meaning that ! initialize_terminating_signals has not been called ! sig.h ! - new extern declaration for initialize_terminating_signals ! trap.c ! - call initialize_terminating_signals from set_signal if sig is ! EXIT_TRAP and the shell is not interactive. Since the terminating ! signals do not need to be initialized until a trap on exit is ! set, not doing that at startup should result in a speed increase ! for scripts execute_cmd.c ! - save and restore command->flags in time_command, so you can use ! `time command' in a loop ! 1/24 ! ---- ! lib/readline/display.c ! - fix redisplay code to wrap correctly if the prompt is longer than ! the screen width (reported by bos@Eng.Sun.COM) ! lib/readline/undo.c ! - don't include , it's not needed ! lib/readline/{util,readline}.c ! - include "posixjmp.h" instead of ! - readline_top_level is now a `procenv_t' instead of a `jmp_buf' ! (now readline uses the correct posix semantics for preserving ! the signal mask and other things across longjmp) parse.y ! - fixes to push_string/pop_string to make them more general -- they ! now can be used generally, instead of having to be associated ! with an alias being expanded ! - fixes to the parser so that it parses (( ls abc; ls def); ls ghi) ! as a nested subshell command for backwards compatibility. Broke ! the double-paren expression parsing off into a new function: ! parse_arith_cmd, called from read_token when a `((' is seen. If ! it looks like an arithmetic command, return `let' and set things ! up so that the expression is returned as a double-quoted string ! by the next call to read_token. If it's a nested subshell, push ! the text we parsed onto the list of strings for later consumption ! and return `(' ! lib/glob/glob.c ! - fix glob_vector so it doesn't short-circuit checking a filename if ! it starts with a `.' and the pattern starts with `\.' (if ! noglob_dot_filenames is set). This makes `".junk2"*' match ! `.junk2.txt' correctly ! 1/27 ! ---- ! support/bashbug.sh ! - ask for confirmation before sending the bug report ! builtins/fc.def ! - when editing and re-executing a multiline command, make sure ! current_command_line_count is initialized and then incremented ! for each line read from the file so that the lines added to ! the history list by fc_replhist and fc_addhist obey the `lithist' ! and `cmdhist' shopt options. Reported by tibbitts@pb.seflin.org ! 1/28 ! ---- ! lib/readline/readline.h ! - added a couple of extern declarations for variables described in ! the documentation but heretofore undeclared ! builtins/ulimit.def ! - try to catch some classes of integer overflows before calling ! set_limit ! 1/29 ! ---- ! parse.y ! - push and pop a `(' delimiter while parsing a $(...) construct, so ! the history code doesn't try to inappropriately add a `;' when ! a newline appears in the `...' ! aclocal.m4 ! - new macro, BASH_STRUCT_WINSIZE, which looks for `struct winsize' ! in (or one of the files it includes) ! configure.in ! - call BASH_STRUCT_WINSIZE ! - slightly reorganized the calls to bash-specific macros ! config.h.in ! - add an `#undef STRUCT_WINSIZE_IN_SYS_IOCTL' ! jobs.c, nojobs.c ! - only look in sys/ptem.h for struct winsize if ! STRUCT_WINSIZE_IN_SYS_IOCTL is not defined to cpp ! 1/30 ! ---- ! .{distribution,patchlevel} ! - renamed to _{distribution,patchlevel} ! configure.in ! - create a variable BASHVERS, from the contents of _distribution, ! and a variable BASHPATCH, from the contents of _patchlevel, ! (using m4 magic so we don't have to distribute .distribution ! and .patchlevel) and substitute them into Makefile.in ! Makefile.in ! - use Version and PatchLevel variables instead of the contents of ! .distribution and .patchlevel, respectively. These are set by ! configure ! - removed `.machine' from targets and dependencies ! support/mkversion.sh ! - new shell script to handle updating version.h, replaces mkversion.c ! (which is now overkill) ! support/mkdist ! - don't bother with writing .distribution and .patchlevel files, ! since they're no longer distributed ! ! support/mknewvers.sh ! - simple bash script to make new version files. It can increment ! the major or minor version numbers or patchlevel, or take a ! completely new version number (e.g., 2.01) as an argument ! ! doc/Makefile.in ! - added support for the `install-info' command to update the info ! directory file after installing bash.info ! 1/31 ! ---- ! builtins/help.def ! - fix core dump with `help --' ! susbt.c ! - make call_expand_word_internal obey the convention that if ! expand_word_internal returns &expand_word_{fatal,error}, then ! w->word has already been freed ! - return &expand_word_fatal from expand_word_internal if the shell ! is not interactive and `set -u' has been executed ! test.c, general.c ! - moved group_member from test.c to general.c ! externs.h, general.h ! - moved extern declaration of group_member from externs.h to general.h general.c ! - broke the code that initializes the group array out into a new ! function, initialize_group_array() ! - initialize_group_array() now initializes an array even if the OS ! does not have getgroups(). If it does not, an array with one ! element (the real gid) is created ! - call sysconf(_SC_NGROUPS_MAX) if sysconf is available and ! _SC_NGROUPS_MAX is defined ! - new function, char **get_group_list(int *), to return an array ! of strings made from the groups list ! ! variables.c ! - new dynamic array variable: GROUPS, expands to the group set as ! obtained with getgroups() (or whatever initialize_group_array() ! makes) ! ! doc/{bash.{1,html},bashref.texi} ! - added description of GROUPS variable ! ! test/test-tests ! - before modifying the setgid bit on /tmp/setgid, try to change its ! group to ${GROUPS[0]} ! ! 2/3 ! --- ! aclocal.m4 ! - new autconf macro, BASH_MISC_SPEED_T, to see if speed_t is defined ! in ! configure.in ! - call BASH_MISC_SPEED_T ! config.h.in ! - add `#undef SPEED_T_IN_SYS_TYPES' ! lib/readline/tcap.h ! - include `rltty.h' if HAVE_TERMCAP_H and __linux__ are defined, but ! SPEED_T_IN_SYS_STYPES is not, before including ! support/mksignames.c, siglist.c ! - add support for 4.4 BSD SIGLOST ! support/config.guess ! - add support for recognizing QNX based on `uname' output ! Makefile.in ! - make sure recho and zecho are compiled with the same set of CC ! options as the rest of the sources ! lib/readline/bind.c ! - change calls to rl_generic_bind to cast the third argument to ! (char *) where necessary command.h ! - two new flags: CMD_AMPERSAND (currently unused), and CMD_STDIN_REDIR, ! which means that this command should have its standard input ! redirected from /dev/null if there are not any explicit redirections ! to stdin ! ! execute_cmd.c ! - a redirection of type r_inputa_direction is no longer added at the ! beginning of the redirection chain for an async command; ! CMD_STDIN_REDIR is set in the flags instead ! - new function: stdin_redirects: returns the number of redirections to ! stdin in a chain of redirections ! - new functions: async_redirect_stdin() to open /dev/null and make it ! file descriptor 0 ! - changes to make CMD_STDIN_REDIR propagate to all of the necessary ! functions (like execute_simple_command) ! - execute_disk command now takes the flags from simple_command rather ! than just the CMD_NO_FORK flag as its last argument ! - various places after make_child is executed (in the child) check for ! CMD_STDIN_REDIRECT (and no stdin redirections or piping) and call ! async_redirect_stdin ! - stdin_redir is now global ! eval.c ! - set stdin_redir to 0 just before calling execute_command so it ! gets reset to a known value and doesn't persist across commands ! 2/4 ! --- ! builtins/ulimit.def ! - add a stub function for ulimit(2) on systems without HAVE_RESOURCE ! or HAVE_ULIMIT that just sets errno to EINVAL and returns -1 -- ! QNX is one such system ! bashhist.c ! - pre_process_line needs to protect all occurrences of hist_verify ! with #ifdef READLINE builtins/shopt.def ! - hist_verify needs to be protected with #ifdef READLINE, not ! #ifdef HISTORY ! 2/5 ! --- ! support/config.{guess,sub}, configure.in ! - chages to better support the Harris Night Hawk ! [many files] ! - changes for things pointed out by gcc -Wall ! lib/glob/Makefile.in ! - make sure -DSHELL is included in CCFLAGS so that globbing is ! interruptible ! lib/malloc/malloc.c ! - extern declaration for botch: if botch is #defined, it should be ! the name of a void function ! configure.in,Makefile.in,builtins/Makefile.in, ! lib/{glob,malloc,readline,tilde}/Makefile.in ! - add a LOCAL_DEFS variable, substituted from configure into the ! various Makefiles. It's set to -DSHELL, so that define gets ! passed to all sub-makes without doing anything special ! lib/readline/readline.c ! - change to rl_digit_loop to make it compatible with GNU emacs: ! if a key bound to `universal-argument' is read after reading ! some digits, it terminates the argument but is otherwise ! ignored. This is how people can insert repeated digits ! ! doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo ! - changed description of `universal-argument' to describe how ! to terminate a numeric argument ! 2/6 ! --- ! jobs.c ! - changed kill_pid to diddle the job and process data structures ! if we're sending SIGCONT to a stopped job with `kill' so that ! the shell knows the job is running again. ksh93 does this ! 2/7 ! --- ! unwind_prot.c ! - changed bcopy to FASTCOPY ! builtins/enable.def ! - changed pointer arithmetic in delete_builtin to just subtract ! the head of the builtins list (shell_builtins) from a pointer ! to the builtin to be deleted (b) to find its index in the list ! on ANSI C systems - 2/10 - ---- lib/readline/bind.c ! - when using old-style keynames to bind to a new-style macro, ! pass an array of type (unsigned char *) to rl_macro_bind ! builtins/getopt.c ! - change sh_getopt to return EOF if nextchar is empty or NULL ! and sh_optind is greater than argc. This can happen if a ! script mixes calls to `getopts' with calls to `shift' ! ! 2/11 ! ---- ! print_cmd.c ! - fixed make_command_string_internal so that commands with the ! CMD_TIME_POSIX flag set print `time -p' instead of `time' ! - changed print_redirection_list so the here documents are ! printed after all the other redirections, and followed by a ! newline (rather than a possible semicolon) ! - added a new variable, was_heredoc, to avoid adding a semicolon ! at the beginning of an empty line after printing the heredoc ! ending delimiter ! execute_cmd.c ! - don't put the gnu_argv_flags into the environment any more; it's ! proven to be a bad idea ! configure.in ! - set LOCAL_CFLAGS to `-DSunOS5' on Solaris 5.5[.x] ! builtins/echo.def ! - only call fflush() after printing each word on SunOS 5.5, since ! that's the system with the bug that prompted its inclusion in ! the first place ! support/mksignames.c ! - added support for more system-specific signals from AIX 4.2, ! changed initialization order so that system-specific signals ! are done first, before the common signals ! 2/12 ! ---- ! execute_cmd.c ! - broke the code that creates a file containing the text of a ! here document out into a separate function: here_doc_to_fd ! - create the temp file used for a here document with mode 600 ! - open the temp file used for a here document with O_EXCL ! shell.h ! - changed the uid members of struct user_info to be of type uid_t ! and the gid members to be of type gid_t ! parse.y ! - changed the type of the `type' argument to init_yy_io() to be ! `enum stream_type', since that's what's always passed ! input.h ! - changed the function prototype for init_yy_io so the third arg is ! type `enum stream_type' ! externs.h ! - added a prototype for getcwd, if HAVE_GETCWD is not defined ! builtins/umask.def ! - changed all variables that are used as arguments to or save the ! return value from umask(2) to be of type mode_t ! - changed print_symbolic_umask to take an argument of type mode_t ! 2/13 ! ---- ! jobs.c ! - if old_sigint_handler is set to SIG_DFL, as it will be in a script ! without a trap on SIGINT installed, call termination_unwind_protect() ! directly from waitchld() ! 2/14 ---- configure.in ! - added a section before the call to BASH_CHECK_LIB_TERMCAP to ! set a variable prefer_curses on some systems (AIX, for one) ! aclocal.m4 ! - in BASH_CHECK_LIB_TERMCAP, don't return -ltermcap if $prefer_curses ! is non-empty ! lib/readline/Makefile.in ! - redid the dependencies ! 2/17 ! ---- ! hashlib.c, getcwd.c ! - include `bashansi.h' instead of stdlib.h and string.h ! error.c, siglist.c, xmalloc.c, builtins/{common,evalfile,mkbuiltins,psize}.c, ! builtins/{exec,exit,fg_bg,hash,history}.def ! - include `bashtypes.h' instead of directly including ! builtins/fc.def ! - include ../bashtypes.h and ../posixstat.h instead of bashtypes.h ! and posixstat.h ! builtins/mkbuiltins.c ! - include ../posixstat.h instead of ! general.h ! - include `bashtypes.h' if RLIMTYPE is defined, so we can fetch ! a definition of quad_t (or whatever) from before ! using it in a function prototype ! Makefile.in, builtins/Makefile.in ! - updated dependencies ! 2/18 ! ---- ! builtins/set.def ! - new function, set_posix_mode, called when `set [-+]o posix' ! or `shopt -[su] -o posix' is executed. It sets or unsets ! $POSIXLY_CORRECT and calls sv_strict_posix subst.c ! - in sv_strict_posix, call posix_readline_initialize only if ! the shell is interactive (interactive_shell != 0) ! shell.c ! - if we are acting like `sh', call posix_readline_initialize ! if the shell is interactive ! - moved the code that does posix.2 mode initialization after ! interactive_shell is set, and call posix_readline_initialize ! if interactive_shell is non-zero ! bashwait.h ! - renamed to unionwait.h, since that is what it defines ! posixwait.h ! - moved the POSIX 1003.1 job control defines here from jobs.h ! jobs.h ! - include `posixwait.h' ! 2/19 ! ---- ! braces.c ! - if SHELL is defined, pass the contents of new-style command ! substitution through without expanding brace constructs between ! the parens -- let the subshell do it ! subst.c ! - when brace-expanding words, preserve the flags (word->flags) if ! brace expansion does not change the word. This fixes the problem ! of things like ! local -a avar=( ${PATH//: } ); ! bashline.c ! - have shell_expand_line pass a copy of rl_line_buffer to expand_string ! in case there are substitution errors and the string gets freed ! 2/20 ! ---- ! expr.c ! - make sure that expland and explor set `lasttok' to LAND and LOR, ! respectively, if they parse `&&' or `||'. This makes the ! precedence code work right ! subst.c ! - changes so that non-interactive shells exit immediately when a ! parameter that is unset is referenced after `set -u' has been ! executed causes the shell to exit immediately ! 2/21 ! ---- ! flags.c ! - if `set -r' is executed, call maybe_make_restricted so that $PATH ! and $SHELL are made read-only ! execute_cmd.c ! - if `set -e' has been executed, and we're inverting a pipeline's ! return status with `!', set CMD_IGNORE_RETURN so a failing ! command does not inadvertently cause the shell to exit before ! the exit status can be inverted. This is probably only a problem ! with the `eval' builtin. ! 2/24 ! ---- ! builtins/hash.def ! - add a missing argument of 0 to add_hashed_command ! builtins/kill.def ! - job identifiers can be used in non-interactive shells as long as ! job control has been turned on with `set -m' ! jobs.c ! - we want to be notified of stopped jobs if job_control is non-zero, ! even if the shell is not interactive ! execute_cmd.c ! - make sure shell_execve returns EX_NOTFOUND if execve fails and ! errno is set to ENOENT ! - makes sure execute_builtin saves the temporary environment to ! builtin_env for the `eval' builtin, since it can destroy the ! temporary environment when it calls parse_and_execute ! bashhist.c ! - new variable: hist_last_line_added, set to 1 if the last command ! line was added to the history successfully as a separate entry. ! Used by `history' and `fc' ! 2/25 ! ---- ! trap.c ! - save line number before executing trap command, because ! parse_and_execute resets it to 1 and the trap command might ! want it ! execute_cmd.c ! - change to executing_line_number to return trap_line_number if ! the shell is currently running a trap ! 2/26 ---- ! execute_cmd.c ! - change to time_command so that a `real' value of 0 does not ! cause a divide-by-zero error when computing cpu percentage ! lib/readline/signals.c ! - if MUST_REINSTALL_SIGHANDLERS is defined, reinstall the SIGWINCH ! handler in rl_handle_sigwinch ! builtins/set.def ! - `unset' now rejects attempts to unset names that are not valid ! shell identifiers as errors ! - add a description of `-o history' option to help text subst.c ! - in parameter_brace_patsub, we want backslash removal done on ! the replacement if (mflags & MATCH_QUOTED), since the code ! in expand_word_internal will not do it. We need to call ! expand_string_unsplit directly, since maybe_expand_string does ! not do the right thing ! 2/28 ---- ! execute_cmd.c ! - if execute_for_command finds that the iteration variable is readonly, ! decrement loop_level before returning ! builtins/break.def ! - if the break count is <= 0, display an error message and break out ! of all loops ! builtins/command.def ! - if PATH is unset, and we're using command -p, we don't want PATH ! to be set to the empty string when `command' completes ! builtins/common.c ! - POSIX.2 says `kill -l signum' prints the signal name without the ! leading `SIG' prefix, so check for this_shell_builtin == kill_builtin ! in display_signal_list ! builtins/getopts.def ! - when invoked without any arguments, `getopts' now prints a usage ! message ! 3/3 ! --- ! builtins/common.c ! - add a second argument to get_numeric_arg: if non-zero, the shell ! exits on a bad argument; if not, the shell jumps to top_level ! with a DISCARD argument, which aborts the current command ! builtins/{break,exit,history,return,shift}.def ! - change calls to get_numeric_argument ! lib/readline/funmap.c ! - add `dump-macros' to list of bindable names ! lib/readline/readline.h ! - added extern declaration for rl_prompt (it was apparently missing) ! lib/readline/readline.c ! - new internal function, _rl_init_line_state, which sets rl_point ! and rl_end to 0, sets the_line to point to _rl_line_buffer, and ! clears the line ! lib/readline/callback.c ! - if a user's callback function does not clear the line, clear it ! for him by calling _rl_init_line_state ! 3/4 ! --- ! alias.c ! - made the readline support functions #ifdef READLINE, so they're ! not compiled into the shell unless readline is ! lib/readline/bind.c ! - new function _rl_untranslate_macro_value, to expand meta-prefixes ! and other special characters in a macro value for printing by ! _rl_macro_dumper_internal ! - call _rl_untranslate_macro_value in _rl_macro_dumper_internal to ! get a printable version of the macro value ! lib/readline/readline.c ! - new variable, rl_dispatching, set to 1 when we call a function ! from _rl_dispatch ! lib/readline/readline.h ! - extern declaration for rl_dispatching ! lib/readline/complete.c ! - make sure S_ISCHR and S_ISBLK are defined before using them ! lib/readline/terminal.c ! - add a new #define NEED_EXTERN_PC. Define this if the termcap ! or curses libraries need `extern' before declarations of PC, ! BC, and UP ! ! lib/readline/{readline,terminal,histfile}.c ! - changes to compile on OS/2 with OS/2 `EMX' port of gcc, originally ! sent by ilya@math.ohio-state.edu ! builtins/set.def ! - fixed a bug in set_shellopts that caused the shell to crash if ! there were no shell options set ! 3/5 ! --- ! configure.in,Makefile.in ! - choose run-all or run-minimal as the test script based on whether ! the --enable-minimal-config option was given to configure ! builtins/setattr.def ! - fixed `export -p' and `readonly -p' so that they output `export' ! or `readonly' when in POSIX mode, as POSIX.2 specifies ! 3/6 ! --- ! builtins/setattr.def ! - make `readonly -a var=(...)' work just like `declare -ar var=(...)', ! since the two logically mean the same ! - `readonly -f' and `export -f' don't print the function definition ! for each readonly or exported function, respectively, when in ! POSIX mode ! ! jobs.c, nojobs.c ! - don't report status for processes killed by SIGPIPE if ! DONT_REPORT_SIGPIPE is defined ! config.h.top ! - added a commented-out define for DONT_REPORT_SIGPIPE ! execute_cmd.c ! - `time' can now be used to time background pipelines, and reports ! the timing statistics when the pipeline completes ! [bash-2.01-alpha1 frozen] ! 3/12 ! ---- ! subst.c ! - move the parent end of the pipe file descriptor used for process ! substitution to a high, unused file descriptor to avoid clashes ! with redirections performed explicitly by a script ! configure.in ! - added a `--with-curses' argument so curses can be forcibly chosen ! over libtermcap (some Unix versions ship lousy termcap databases) ! support/mkconffiles ! - new script to create _distribution and _patchlevel from values ! contained in `configure' ! doc/bashref.texi ! - updated installation instructions ! 3/13 ---- ! general.c ! - if `getgroups' returns 0, make sure we add the primary group id ! as GROUPS[0]. ! - if we have getgroups, and the primary gid is not in the array ! getgroups returns, add it as group_array[0] and shuffle everything ! up one element. This ensures that current_user.gid == group_array[0] ! all the time ! ! tests/builtins.tests ! - changes to avoid stray variables in environment when the shell ! version of printenv is used with bash as /bin/sh, running the ! `exec -c' tests. ! 3/14 ---- ! builtins/cd.def ! - spelling correction is no longer enabled by default ! support/bashbug.sh ! - if the shell's release status is alpha or beta, offer the option ! of sending the bug report to the bash-testers mailing list as ! well as to chet ! 3/17 ! ---- ! configure.in ! - configure --without-gnu-malloc by default on *-sgi-irix6* because ! their code needs 8-byte alignment ! support/bashbug.sh ! - ``' needs to be quoted with a backslash in double-quoted strings ! aclocal.m4 ! - slight changes to the strcoll test, since AIX 4.2 returns -1, 0, or ! 1 from strcmp(3) but a numeric collation order difference from ! strcoll(3) ! 3/18 ! ---- ! command.h ! - new redirection error code: HEREDOC_REDIRECT execute_cmd.c ! - return HEREDOC_REDIRECT from do_redirection_internal when ! here_document_to_fd cannot create the temp file for a here document ! - changed redirection_error to print a meaningful message when ! here document temp file creation fails (HEREDOC_REDIRECT) ! ! 3/19 ! ---- ! subst.c ! - changes to match_pattern_char: return 1 if the first char of the ! pattern is `?' only if the string is non-null; just return 1 if ! the first char of the pattern is `[' and the string is non-empty ! rather than try to re-implement the brace matching code from fnmatch ! lib/glob/fnmatch.c ! - some changes from glibc-2.0.1 posix/fnmatch.c ! 3/21 ! ---- ! variables.c ! - only do the initialization of `ignoreeof' if the shell is ! interactive ! - reset values of $SHLVL > 1000 to 1 in adjust_shell_level, and ! don't call itos, since we don't need its generality ! - new function, initialize_shell_level, just calls adjust_shell_level ! with argument of 1. If $SHLVL is unset, adjust_shell_level will ! deal with it correctly ! - change initialize_shell_variables to not malloc a copy of each ! environment variable, just keep two pointers into the env string: ! one for the name, one for the value ! - broke the code that computes the value of $BASH out into a separate ! function: get_bash_name ! - get_bash_name special-cases shell_name with a `./' prefix when ! initializing $BASH ! - new function: set_home_var, sets $HOME to current_user.home_dir if ! it's not already set, calling get_current_user_info if ! current_user.home_dir is NULL ! - new function: set_shell_var, sets $SHELL to current_user.shell if ! it's not already set, calling get_current_user_info if ! current_user.shell is NULL ! - changed places that reference information in current_user to check ! for NULL values of the member they're interested in and call ! get_current_user_info if necessary ! shell.c ! - moved the code that sets up the information in current_user that ! comes from the password file into a new function, ! get_current_user_info ! - shell_initialize calls get_current_user_info only if the shell is ! interactive ! externs.h ! - new extern declaration for get_current_user_info(), so variables.c ! can use it ! 3/24 ---- ! lib/tilde/tilde.c ! - if SHELL is defined, user the current_user struct info to find ! the user's home directory rather than calling getpwuid ! 3/25 ---- - nojobs.c - - don't try to open /dev/tty when getting or setting the tty state - and window size; use shell_tty instead - - initialize shell_tty to standard error in initialize_job_control - - only fetch the tty state initially if the shell is interactive ! general.c ! - open /dev/tty with the O_NONBLOCK flag ! variables.c ! - changed all_vars so that it sorts its output all the time, not ! just when in POSIX mode. This means that the output of `set' ! and `export' will be sorted ! builtins/set.def ! - in initialize_shell_options, only call parse_shellopts if we ! inherited $SHELLOPTS from the environment ! - make sure we call parse_shellopts from initialize_shell_options ! with a copy of the value of SHELLOPTS, in case one of the functions ! called while setting one of the variables modifies $SHELLOPTS lib/readline/readline.c ! - make sure that digit arguments don't change the state of ! rl_last_func ! support/printenv.c ! - new file, printenv(1) clone, used to avoid environment variables ! that might be set automatically when using printenv.sh ! lib/tilde/tilde.c ! - if SHELL is defined, don't call getenv to get the value of $HOME, ! call get_string_value () directly ! 3/26 ! ---- ! lib/readline/histexpand.c ! - abstracted the `#ifdef SHELL' stuff that checked for special cases ! that should not be history expanded ([!...], ${!...}) into a call ! to a function that is the value of the ! new history_inhibit_expansion_function variable ! lib/readline/history.h ! - extern declaration for history_inhibit_expansion_function ! bashhist.c ! - new function, bash_history_inhibit_expansion, which checks for ! the special cases in which history expansion should be inhibited ! - changes to the various history initialization functions to ! set history_inhibit_expansion_function ! lib/readline/doc/hstech.texinfo ! - documented history_inhibit_expansion_function ! lib/readline/shell.c ! - new file, containing versions of the functions that are provided ! by bash when readline is linked as part of bash ! - new function: get_env_value(). If SHELL is defined, this calls ! get_string_value(). If SHELL is not defined, this calls getenv() ! lib/readline/histexpand.c ! - moved single_quote() to shell.c ! lib/readline/util.c ! - moved savestring() to shell.c ! lib/readline/terminal.c ! - moved set_lines_and_columns() to shell.c ! lib/readline/Makefile.in, Makefile.in ! - added shell.c and shell.o to the appropriate variables that contain ! the files comprising the readline and history libraries ! ! lib/readline/signals.c ! - introduced two new cpp defines: HANDLE_JOB_SIGNALS and ! HANDLE_SIGTERM. When HANDLE_JOB_SIGNALS is defined, SIGTSTP, ! SIGTTIN, and SIGTTOU are caught and handled. When HANDLE_SIGTERM ! is defined, SIGTERM is caught and handled. These are both ! defined automatically if SHELL is not defined ! ! lib/readline/{bind,histfile,nls,readline,terminal}.c ! - call get_env_value instead of getenv(). This should remove the ! dependency on being able to redefine getenv() in oslib.c ! shell.c ! - added a missing argument of -1 to the call to list_minus_o_opts. ! Now `bash -o' lists all options, not just random ones depending ! on what's on the stack ! 3/28 ! ---- ! builtins/ulimit.def ! - change RLIM_INFINITY to the hard limit only if the hard limit is ! greater than the current (soft) limit ! hashlib.c ! - return immediately from flush_hash_table if the hash table passed ! is NULL ! 4/1 --- ! shell.c ! - remove call to initialize_filename_hashing -- initialize the hash ! table the first time a hashed command has to be remembered ! hashcmd.c ! - new file, with functions to perform filename hashing and lookup ! taken from builtins/hash.def and builtins/common.c ! - change to remember_filename -- call initialize_filename_hashing ! if hashing_initialized is 0 ! ! hashcmd.h ! - new file, mostly from builtins/hashcom.h, with extern function ! declarations added ! execute_cmd.c, builtins/{hash,type}.def ! - include hashcmd.h for hash function and type definitions ! builtins/{common.{c,h},hash.def} ! - moved hashing functions and declarations to hashcmd.c/hashcmd.h ! Makefile.in, builtins/Makefile.in ! - changed source and object file definitions and dependencies because ! of addition of hashcmd.h and hashcmd.c ! builtins/hash.def ! - return immediately from print_hashed_commands if hashed_commands ! is empty, indicating that the hash table has not been initialized ! 4/2 ! --- ! lib/readline/bind.c ! - fixed translation of ESC in rl_untranslate_keyseq and ! rl_untranslate_macro_value ! lib/readline/{readline,kill}.c ! - added an argument to _rl_fix_point telling it whether or not to ! fix up the mark also; changed calls to _rl_fix_point to add the ! appropriate argument ! Makefile.in ! - changed the substitution delimiter in the `sed' commands that ! create bashbug from `:' to `%' to avoid conflicts with options ! containing `:' ! 4/3 ! --- ! print_cmd.c ! - made the initial value and the default growth value for the ! printed command somewhat smaller -- we don't really need to ! allocate 4096 bytes for the printed command ! - added stdarg support to xprintf if PREFER_STDARG is defined ! stringlib.c ! - changed strip_trailing to take the index of the last character ! as the second argument, saving a (useless) call to strlen, since ! the caller already knows where the end of the string is ! subst.c ! - change call to strip_trailing in command_substitute to add the ! new second argument ! externs.h ! - changed extern declaration for strip_trailing ! 4/4 ! --- ! Makefile.in, configure.in, lib/malloc/Makefile.in ! - changed the strategy for picking which `malloc' to include by ! having configure define a `malloc target' and the Makefile in ! lib/malloc implementing rules for that target ! 4/5 --- ! Makefile.in ! - slightly changed the rules for remaking `parser-built': it is ! now a copy of y.tab.h, updated only when the contents of y.tab.h ! change ! - everything that used to depend on y.tab.h now depends on ! parser-built ! 4/6 ! --- ! execute_cmd.c, print_cmd.c ! - use #include so we pick up y.tab.h from the build ! directory instead of the source directory if it happens to be ! recreated in the build directory ! 4/7 ! --- ! bashline.c ! - fixed another problem with `pwd`/[TAB] thinking that the `/ ! started an unclosed command substitution, generating errors ! 4/8 --- ! general.c ! - renamed bash_tilde_expansion_failure_hook to be ! bash_special_tilde_expansions, since that more accurately reflects ! its function ! - changed tilde_initialize so that there is no failure hook -- the ! special expansions are handled first with the preexpansion hook ! ! lib/tilde/tilde.c ! - new variable: tilde_expansion_preexpansion_hook -- if non-null, it ! points to a function that is called before standard tilde expansion ! is attempted ! lib/tilde/tilde.h ! - extern declaration for tilde_expansion_preexpansion_hook ! doc/{bash.{1,html},bashref.texi} ! - added optional open paren to description of `case' command syntax ! 4/9 ! --- ! variables.c ! - on qnx, set and export a variable `NODE' which contains the QNX ! `node id' ! general.c ! - QNX system can now handle pathnames with a leading `//' ! configure.in ! - added `-Dqnx' to LOCAL_CFLAGS on QNX machines ! lib/malloc/getpagesize.h ! - some systems need sysconf(_SC_PAGE_SIZE) to obtain the page size; ! added code to check for it ! 4/10 ! ---- ! print_cmd.c ! - include the prototype for cprintf only if PREFER_STDARG is defined, ! otherwise just have a K&R-style forward function declaration ! hashlib.h ! - reduced the default number of buckets in a hash table to 53 ! lib/tilde/tilde.c ! - prime the result string in tilde_expand by allocating a new string ! that's as long as the input string (+16 if a tilde appears in ! the string to be expanded). This should reduce the number of ! reallocs ! subst.c ! - broke the code that reads the output of a command substitution ! through the pipe to the subshell out into a separate function: ! read_comsub(). This does not use stdio, but rather reads ! directly from the pipe into a local 128-character buffer ! 4/11 ! ---- ! execute_cmd.c ! - some systems need both and , so include both ! if it's possible, otherwise include (if present) ! lib/readline/rl{tty,defs}.h ! - moved includes of , , etc. to rltty.h ! lib/readline/terminal.c ! - include rltty.h after rldefs.h ! variables.c ! - changes to make environment creation faster and use less memory ! (fewer malloc/free calls, too): ! o two new variables: export_env_index (how many environment ! strings are in export_env) and export_env_size (the ! number of slots for strings allocated in export_env) ! o added new function add_to_export_env, since adding the ! exported shell variables and shell functions does not ! need to search the export_env for a definition to supersede ! (we just cleared it out!) ! o renamed add_or_supersede to add_or_supersede_exported_var, ! since it always works on export_env, and changed the second ! argument to a flag saying whether or not to allocate a new ! copy of the string placed into the environment ! o changed calls to add_or_supersede to the new ! add_or_supersede_exported_var with the appropriate flags ! o don't free and reallocate export_env in maybe_make_export_env, ! just free the strings and start anew ! o prime the size of export_env from the total number of shell ! variables and shell functions -- this will always be enough ! for the exported shell functions and variables, and big ! enough most of the time for the entire environment ! ! builtins/cd.def ! - efficiency hack in bindpwd(): if PWD is exported, we will have to ! rebuild the entire exported environment after every time we change ! directories. What we do is see if array_needs_making changes value ! from 0 to 1 after bind_variable ("PWD", dirname) is called, and ! that PWD is exported. If that happens, we just replace the value ! of PWD in the exported environment with a call to ! add_or_supersede_exported_var ! ! bashline.c, parse.y ! - check calls to pre_process_line to make a fresh copy of the line ! if pre_process_line returns what it was passed, in preparation ! for future changes ! bashhist.c ! - pre_process_line now returns its argument if it did not make ! any changes to it ! alias.c ! - free the bucket entry holding the alias to be removed in ! remove_alias, as well as the data ! 4/14 ---- ! unwind_prot.c ! - if an unwind-protect frame is being discarded, and its cleanup ! function is `restore_variable', the `arg' member points to a ! SAVED_VAR that must be freed. This change is made in ! remove_unwind_protect_internal and unwind_frame_discard_internal ! parse.y ! - need to free memory allocated by parse_arith_cmd if it is an ! arithmetic command, after using it to make a new word ! subst.c ! - fixed some memory leaks caused by not freeing the argument to ! make_bare_word, which duplicates its string argument ! - need to dispose list generated by list_rest_of_args in ! paramter_list_remove_pattern ! - make sure the return value from getpattern() is freed ! - make sure array_value_internal always returns newly-allocated ! memory ! - get_var_and_type returns a new type: VT_ARRAYMEMBER if the ! string passed is of the form var[index] ! - make sure parameter_brace_substring frees the memory allocated ! by get_var_and_type if verify_substring_values returns 0 ! ! hashlib.c, hashlib.h ! - new function, dispose_hash_table (table), which frees the ! table's bucket array and the table itself ! alias.c ! - call dispose_hash_table from delete_all_aliases instead of just ! freeing the table ! pathexp.c ! - make sure to free `newnames' (but *not* its contents) before ! returning from ignore_globbed_names ! builtins/exec.def ! - make sure the argv created to pass to shell_execve is freed if ! the execve fails and we're not exiting on failed execs ! expr.c ! - broke evalexp into two functions: evalexp, which sets up the ! jmp_buf that errors jump to, and subexpr, which does the ! evaluation and pushing and popping of contexts ! - readtok now calls subexpr to evaluate subexpressions in ! parentheses ! - evalexp now takes an additional paramter, a pointer to an int. ! If the expression contains errors, the location to which this ! points gets 0, otherwise it gets 1 to show that the value ! returned may be used. This plugs up memory leaks that were ! the result of evalexp() longjmping back to top_level ! - fixed a memory leak: expr_stack[0] was not being freed ! externs.h ! - changed extern declaration for evalexp ! ! variables.c, subst.c, builtins/let.def ! - changed calls to evalexp appropriately. They either cause a ! longjmp (top_level, DISCARD) (which is what the old stuff in ! expr.c did) or are handled by returning an appropriate error ! value (e.g., &expand_word_error in subst.c) ! 4/16 ! ---- ! shell.c ! - make sure to free dollar_vars[0] before assigning it the first ! argument following `-c command' ! variables.c ! - if unsetting a local variable with a previous context, make sure ! to free the hash table element used to store the local variable ! lib/readline/terminal.c ! - rearrange the includes so is included before rltty.h, ! as it is in rltty.c ! 4/17 ---- ! flags.c ! - new function: reset_shell_flags, which resets all of the flags ! back to their initial values ! flags.h ! - extern declaration for reset_shell_flags ! builtins/set.def ! - new function: reset_shell_options, which resets all of the -o ! options that are not also shell flags back to their initial values ! builtins/shopt.def ! - new function: reset_shopt_options, which resets all of the shopt ! options that are not also shell flags or -o options back to their ! initial values ! builtins/common.h ! - extern declarations for reset_shell_options and reset_shopt_options ! execute_cmd.c ! - broke the code that reinitializes things when an executable script ! without a leading `#!' is found out into a new function: ! initialize_subshell ! - initialize_subshell now calls the reset_* functions that reset the ! shell flags and options ! ! general.c, general.h ! - move_to_high_fd now takes a third argument: the highest fd at which ! to start looking. If that's less than 20, the maximum number of ! open files as returned by getdtablesize() is used (which is what ! it did before this) ! jobs.c, shell.c, subst.c ! - changed calls to move_to_high_fd appropriately ! [bash-2.01-beta1 frozen] ! 4/18 ! ---- ! general.c ! - itos now uses a local char buffer to do its conversion, but still ! returns newly-allocated memory ! 4/21 ! ---- ! variables.c ! - be a little more careful when checking for backwards-compatibility ! with exported function definitions ! 4/22 ---- ! builtins/ulimit.def ! - translate RLIM_INFINITY to limit.rlim_max if the current limit is ! less than or equal to the hard limit, not just strictly less than ! (the change of 3/28 was too drastic) ! 4/23 ! ---- ! oslib.c ! - fixed definition of to_lower on machines without strcasecmp ! trap.c ! - don't free the trap command in change_signal if the SIG_INPROGRESS ! is set in the signal's flags -- it will cause memory to be freed ! twice if a trap command resets the signal handler more than once, ! and _run_trap_internal keeps a pointer to the trap command so it ! can free it, so there will be no leaks ! 4/24 ---- ! aclocal.m4,configure.in ! - removed BASH_CC_WORKS, since AC_PROG_CC now has the functionality ! shell.c, externs.h ! - get_current_user_info is now a void function ! bashline.c ! - alias_expand_line_internal was removed ! - new function, alias_expand_line, performs alias expansion on ! rl_line_buffer and either replaces rl_line_buffer or signals ! an error ! - new bindable commands: alias-expand-line and ! history-and-alias-expand-line, available if ALIAS is defined ! ! 4/25 ! ---- ! Makefile.in, lib/malloc/malloc.c ! - changed the define that turns on malloc range checking from ! `rcheck' to `RCHECK' ! lib/readline/isearch.c ! - fixed a couple of places where rl_search_history would try to ! free a NULL pointer ! 4/29 ---- ! unwind_prot.c ! - fixed a problem with saving a variable that is a null pointer ! in unwind_protect_var. It happens only on machines where the ! size of a pointer is not the size of an int. The old FASTCOPY ! code would copy the eight bytes at memory location zero, which ! did not necessarily make a null pointer ! 4/30 ---- ! shell.c ! - run_startup_files should turn off job control, since the startup ! files should be run without job control enabled -- this makes ! SIGINT interrupt startup file execution again ! - if we get a SIGINT or other longjmp to top_level while executing ! the startup files, re-enable job control for interactive shells ! before setting locally_skip_execution ! 5/2 ! --- ! lib/readline/nls.c ! - if we have setlocale(3), don't bother with checking the ! environment variables for valid values; just use setlocale() ! to set the locale categories from the environment variables ! directly and go into eight-bit mode if the current locale is ! not C or POSIX ! 5/5 ! --- ! sig.c ! - make sure that the handler for SIGPROF is not changed if it has ! been set to something other than SIG_IGN or SIG_DFL -- this makes ! profiling work after the terminating signals have been initialized ! bashline.c ! - if a filename containing `!' is completed, and the user has started ! the string with a `"', change the completion style to backslash- ! quoting, since there's no way to use `!' with double quotes (this ! requires more changes to readline to really work right) ! 5/6 ! --- ! lib/readline/complete.c ! - changes to make_quoted_replacement, insert_all_matches, and ! insert_match and their callers to allow the application-specific ! filename quoting function to change the quote character (e.g., for ! bash to change a filename containing a `!' and started with a ! double quote by the user into a filename with the `!' quoted by ! a backslas and no double quote) ! 5/8 ! --- ! jobs.c ! - new function: nohup_all_jobs(), calls nohup_job for each entry in ! the jobs list ! - delete_all_jobs is now global ! jobs.h ! - new extern declarations for delete_all_jobs() and nohup_all_jobs() ! builtins/jobs.def ! - `disown' without any jobspec arguments means the current job. Fix ! a core dump printing the error message when there is no current job ! 5/12 ! ---- ! subst.c ! - process an expansion like $((foo); bar) as a command substitution, ! not as an arithmetic expansion. An arithmetic expansion must have ! a closing `))' ! 5/14 ! ---- ! builtins/evalstring.c ! - the third argument to parse_and_execute() is now a flags word. ! The caller can control the value of `interactive' and whether ! or not history is disabled while parse_and_execute() runs builtins/common.h ! - new #defines for the flag values for parse_and_execute() ! {bashline,jobs,shell,subst,trap,variables}.c, parse.y, builtins/evalfile.c, ! builtins/{eval,fc}.def ! - changed calls to parse_and_execute appropriately ! ! builtins/evalfile.c ! - if _evalfile() is passed FEVAL_HISTORY as part of the flags arg, ! don't pass SEVAL_NOHIST to parse_and_execute ! - new function: fc_execute_file, which sets FEVAL_HISTORY in the ! flags argument to _evalfile() ! ! bashline.c ! - call bash_add_history instead of add_history from ! vi_edit_and_execute_command so the bash state variables get ! updated properly. This keeps the `v' command from operating ! on an empty command when the history list is stifled ! bashhist.c ! - bash_add_history is now global ! bashhist.h ! - extern declaration for bash_add_history ! builtins/fc.def ! - call fc_execute_file instead of maybe_execute_file in the ! edit-and-re-execute case (fc -e ...) ! - don't manually insert the commands from the file created by `fc -e' ! into the history list, just set remember_on_history and let ! fc_execute_file take care of telling parse_and_execute to do the ! right thing. This makes compound commands and the `cmdhist' ! and `lithist' settings work better. This supersedes the fix of ! 1/27. This was reported again by rchen@fractal.eng.yale.edu. ! parse.y ! - the body of a `for' command (the commands between do...done or ! {...}) should be a `compound_list' instead of a `list'. Problem ! reported by cpg@research.bell-labs.com ! 5/19 ! ---- ! lib/readline/complete.c ! - in filename_completion_function, if we find that the directory ! pointer (return value from opendir(3)), is not null when state ! is 0 (indicating that this is the first time the completion ! function has been called for the current completion), call ! closedir on it, assuming that it was left open by a previous ! (interrupted) completion ! [bash-2.01-beta2 frozen] ! 5/27 ! ---- ! Makefile.in ! - make sure that `make distclean' (and other clean targets) remove ! the `printenv' executable ! tests/execscript, tests/redir.tests ! - make sure to set LANG=C and LC_ALL=C so the messages show up in ! English ! tests/run-func ! - add a warning about exported functions in the environment ! 5/29 ! ---- ! builtins/hash.def ! - if one of the arguments passed to `hash' is an absolute pathname, ! just continue the loop, don't do list=list->next first. This ! fixes the `hash a/b' -> core dump bug ! 5/30 ! ---- ! general.c ! - change canonicalize_pathname to leave a leading `/' alone, as ! POSIX requires ! 6/2 ! --- ! support/xenix-link.sh ! - shell script for linking bash under Xenix - 6/3 - --- bashline.c ! - fixed a memory leak in command_word_completion_function, courtesy ! of a.pfaller@pop.gun.de ! ! hashcmd.c ! - fixed find_hashed_filename to always return a newly-allocated ! string ! ! execute_cmd.c ! - since find_hashed_filename returns newly-allocated memory, don't ! call savestring() on it, and free it if the data is stale (in ! search_for_command()). Another memory leak fixed courtesy of ! a.pfaller@pop.gun.de ! builtins/type.def ! - free the value returned by find_hashed_filename ! [bash-2.01-release frozen] ! ! 6/6 ! --- ! configure.in ! - force shlicc2 and libc malloc for BSD/OS 3.0 ! 6/9 ! --- ! doc/Makefile.in ! - don't create ${man3dir}, since we're not installing the readline ! manual page ! lib/readline/readline.h ! - rl_dispatching should be declared `extern' ! [in bash-2.01.1] ! 6/10 ! ---- ! lib/malloc/Makefile.in ! - make sure ${ALLOCA_SOURCE} is preceded by ${srcdir} so that things ! work when building in a directory other than the source directory ! [in bash-2.01.1] ! ! 6/30 ! ---- ! lib/readline/examples/rltest.c ! - don't free the value returned by history_list() ! ! lib/readline/histfile.c ! - open the history file for writing with mode 0600 for better ! security ! [in bash-2.01.1] ! execute_cmd.c ! - select_query now uses legal_number to decide whether the user's ! selection is a valid number, and just executes the loop again if ! invalid input is entered ! [in bash-2.01.1] ! 7/1 ! --- ! builtins/evalstring.c ! - fix to parse_and_execute so `bash -c 'time [-p] zzz'' works right ! [in bash-2.01.1] ! execute_cmd.c ! - fix to execute_command_internal so that `bash -c time [-p] (zzz)'' ! works right ! [in bash-2.01.1] ! - print_formatted_time should pass a long as the fourth parameter ! to mkfmt ! [in bash-2.01.1] ! externs.h, shell.c ! - `exit_shell' is now a void function ! hashlib.c ! - print_table_stats is now a void function ! mailcheck.c ! - made add_mail_file check for the filename in the mail file list ! using the expanded filename, since that is what it puts into ! the list ! [in bash-2.01.1] ! variables.c ! - for the time being, PWD will be auto-exported, since some systems ! seem to expect it ! doc/bashref.texi, lib/readline/doc/{hist,rlman}.texinfo ! - added necessary `dircategory' and `direntry' commands to make ! `install-info' work correctly ! Makefile.in ! - move $(LDFLAGS) after $(BUILTINS_LDFLAGS) and $(LIBRARY_LDFLAGS) on ! the line that links bash ! doc/texinfo.tex ! - upgraded to version 2.185 from the texinfo-3.9 distribution ! lib/tilde/tilde.c ! - fixed a bug in tilde_expand so that enough space is allocated for ! the string and terminating null byte if a `~' does not appear. ! This was masked before by the bash malloc() ! [in bash-2.01.1] ! 7/3 --- ! aclocal.m4 ! - new test, BASH_TYPE_INT32_T, to check which builtin C type is ! 32 bits wide ! - new test, BASH_TYPE_PTRDIFF_T, to check which builtin C type is ! appropriate for pointer arithmetic ! ! configure.in ! - check sizes of int and long, and for the existence of an int32_t ! basic system type. Call BASH_TYPE_INT32_T if int32_t is not ! defined anywhere in the system header files ! - check size of (char *), and for the existence of a ptrdiff_t ! basic system type. Call BASH_TYPE_PTRDIFF_T if ptrdiff_t is not ! defined anywhere in the system header files ! - added a check for ! config.h.in ! - add lines for SIZEOF_INT, SIZEOF_LONG, SIZEOF_CHAR_P, int32_t, ! u_int32_t, and ptrdiff_t ! - added line for HAVE_STDDEF_H ! lib/malloc/malloc.c ! - new version, with many changes and much better memory usage; old ! (bash-2.01) version is lib/malloc/omalloc.c ! lib/malloc/gmalloc.c ! - new version, with a number of changes and range checking included ! by default; old (bash-2.01) version is lib/malloc/ogmalloc.c ! execute_cmd.c ! - applied patch from 5/27 to make execute_simple_command fork early ! if it's part of a pipeline. This keeps assignment statements or ! other commands that don't require a builtin, function, or disk ! command to be executed from modifying the shell's environment ! ! tests/exec?.sub ! - renamed from tests/execscript.sub? because those filenames are ! too long for System V 14-char filename systems ! ! tests/source?.sub ! - renamed from tests/source.sub? because those filenames are bad ! for DOS/Windows ! ! tests/getopts?.sub ! - renamed from tests/getopts.sub? because those filenames are bad ! for DOS/Windows ! ! tests/histexp.{tests,right} ! - renamed from histexpand.{tests,right} because those filenames are ! too long for System V 14-char filename systems ! ! tests/trap1.sub ! - renamed from trap.sub1 because that filename was bad for DOS/Windows ! ! tests/ifs-[123].right ! - renamed from ifs.[123].right because those filenames were bad for ! DOS/Windows ! ! tests/ifs-[123].test ! - renamed from ifs-test-[123].sh because those filenames were bad ! for DOS/Windows ! ! examples/startup-files/Bashrc.bfox ! - renamed from examples/startup-files/Bashrc because that filename ! conflicts with examples/startup-files/bashrc on case-insensitive ! file systems ! ! tests/exec.right ! - renamed from execscript.right because that filename is too long ! for System V 14-char filename systems ! ! tests/run-set-e ! - renamed from run-set-e-test ! ! tests/misc/perftest ! - renamed from tests/misc/haertel.perftest because that filename is ! too long for System V 14-char filename systems ! lib/glob/fnmatch.c ! - new version with full POSIX.2 BRE matching (character classes, ! collating symbols, equivalence classes), full support for ! strcoll(3), and case-insensitive pattern matching ! lib/glob/fnmatch.h ! - new version, with necessary symbols for the new fnmatch.c ! tests/posixpat.{tests,right}, tests/run-posixpat ! - test suite for the POSIX.2 BRE pattern matching code ! variables.c ! - make sure that array assignment using the compound syntax empties ! the array before doing the assignment ! [in bash-2.01.1] ! trap.c ! - new function, trap_to_sighandler(sig), which returns the correct ! trap handler for SIG depending on the information in sigmodes[sig] ! [in bash-2.01.1] ! ! sig.h ! - extern declarations for trap_handler and trap_to_sighandler ! [in bash-2.01.1] ! jobs.c ! - if we get an interrupt while waiting for a command to complete, ! and there was a trap set on SIGINT that resets the handler to ! SIG_DFL, the value that waitchld uses for old_trap_handler will ! be wrong (it will be trap_handler, but trap_handler no longer ! knows anything about SIGINT). If old_signal_handler is trap_handler, ! but signal_is_trapped(SIGINT) returns 0, we need to call ! trap_to_sighandler to decide what to do ! [in bash-2.01.1] ! 7/7 ! --- ! locale.c ! - fix to set_locale_var to handle an assignment to LC_ALL (e.g., as ! the result of `unset LANG') when default_locale is null ! [in bash-2.01.1] ! 7/8 ! --- ! builtins/umask.def, doc/{bash.{1,html},bashref.texi} ! - added `-p' option for umask to print output in a reusable form ! 7/9 ! --- ! doc/{bash.{1,html},bashref.texi} ! - removed descriptions of `-type', `-path', and `-all' options to ! the `type' builtin in preparation for removing them in the next ! release ! ! builtins/type.def ! - removed mention of `-type', `-path', and `-all' options from the ! long help description ! error.c, error.h ! - new function: internal_warning, for warning messages ! variables.c ! - changed a call to internal_error to use internal_warning ! - modified change of 7/3 so that arrays are not emptied until ! just before the shell is about to assign the new values, so ! the old value can be used to generate the rhs of the assignment, ! if necessary. This is how `normal' shell variables work ! [in bash-2.01.1] ! ! jobs.c, jobs.h ! - delete_job now takes a second int argument and prints a warning ! message when deleting a stopped job if the second argument is ! non-zero ! jobs.c, builtins/jobs.def ! - changed all calls to delete_job to provide a proper second arg ! lib/readline/bind.c ! - broke rl_read_init_file into an `upper' and `lower' half in ! preparation for adding file inclusion capability to inputrc ! parsing ! - handle_parser_directive now displays an error message if an ! unknown directive is encountered ! - parser_endif now prints an error message if an $endif without ! a matching $if is found ! - added `$include' parser directive to read bindings and commands ! from another file at that point ! ! lib/readline/doc/rluser.texinfo, doc/{bash.{1,html},readline.3} ! - documented new readline `$include' parser directive ! ! shell.c, parse.y ! - added a new invocation option, --dump-po-strings, and code to ! make it dump translatable strings ($"...") in GNU gettext ! `po' format ! ! doc/{bash.{1,html},bashref.texi} ! - documented new `--dump-po-strings' invocation option ! ! lib/readline/{{kill,funmap}.c,readline.h} ! - added `rl_paste_from_clipboard()', bound to `paste-from-clipboard' ! for CYGWIN32 users ! ! lib/readline/kill.c ! - incorporated bfox's patches for `iterative' yank-last-arg handling. ! This means that one can keep pressing M-. and move backwards in ! the history, yanking the last argument of successive history lines ! ! lib/readline/rlwinsize.h ! - new file, encapsulates various locations of the definition for ! `struct winsize' ! aclocal.m4 ! - augmented BASH_STRUCT_WINSIZE to look in termios.h as well as ! sys/ioctl.h for definition of `struct winsize' ! lib/readline/rltty.h ! - include "rlwinsize.h" after including tty-driver-specific header ! file ! 7/10 ! ---- ! support/config.guess ! - add better support for SunOS on M68K (old Sun3 machines) ! parse.y ! - check for compound array assignment in read_token_word only if ! there are characters before the `=' (which would make it a legal ! assignment statement). This fixes the problem with defining a ! function named `=' with `=() { echo foo; }' ! [in bash-2.01.1] ! ! jobs.c, jobs.h ! - nohup_all_jobs and delete_all_jobs now take a parameter which ! says whether or not to restrict their operation to only running ! jobs ! jobs.c ! - changed all calls to delete_all_jobs ! builtins/jobs.def ! - added `-a' (all jobs) and `-r' (running jobs only) options to ! `disown' ! ! doc/{bash.{1,html},bashref.texi} ! - documented new `-a' and `-r' options to `disown' ! ! findcmd.c, findcmd.h ! - new files with command searching code from execute_cmd.c and ! function declarations from execute_cmd.h ! Makefile.in, builtins/Makefile.in ! - updated dependencies to account for new findcmd.[ch] ! - updated dependencies to account for new redir.[ch] ! redir.c, redir.h ! - new files with code that sets up lists and performs redirections ! from execute_cmd.c and execute_cmd.h execute_cmd.c ! - include new findcmd.h, redir.h ! 7/11 ! ---- ! Makefile.in, configure.in ! - PROFILE_FLAGS is now substituted into the Makefile by configure ! 7/14 ! ---- ! print_cmd.c ! - make sure single_quote is called from xtrace_print_word_list ! to correctly quote each word of trace output, especially those ! with embedded quotes ! [in bash-2.01.1] ! aclocal.m4 ! - extended BASH_CHECK_GETPW_FUNCS so that it checks that getpwuid ! and getpwnam can also be declared, as well as getpwent ! [in bash-2.01.1] ! - in BASH_FUNC_PRINTF, cast printf to type `_bashfunc' before trying ! to assign it to `pf' to avoid any prototype problems in the ! declaration ! [in bash-2.01.1] ! trap.c ! - include before any of the bash-specific header files, ! but after config.h ! [in bash-2.01.1] ! test.c ! - include and declare `extern int errno' before including ! any of the bash-specific include files, but after ! [in bash-2.01.1] ! builtins/Makefile.in ! - PROFILE_FLAGS is now substituted into the Makefile by configure ! configure.in ! - new options, --enable-profiling and --enable-static-link, to turn ! on profiling with gprof and link bash statically (if using gcc) ! for use as a root shell. The former implies the latter. If ! we're linking statically, dynamic loading of new builtins is not ! available ! doc/bashref.texi ! - documented new --enable-profiling and --enable-static-link ! options in installation section; regenerated INSTALL ! lib/glob/glob.[ch] ! - new global variable, glob_ignore_case, turns on case-insensitive ! filename matching in fnmatch() using the FNM_CASEFOLD flag ! doc/{bash.{1,html},bashref.texi} ! - documented new shopt `nocaseglob' option ! 7/15 ! ---- ! bashline.c ! - when glob_complete_word is called with state == 0, make sure we ! set rl_filename_completion_desired so that proper quoting of ! the resultant filenames is performed ! [in bash-2.01.1] ! ! 7/16 ! ---- ! externs.h, oslib.c ! - strcasecmp and strncasecmp replacements should have `const char *' ! as the first two arguments, to match OS definitions ! [in bash-2.01.1] ! ! 7/17 ! ---- ! (many files) ! - changes for minix-2.0, mostly just adding #ifndef _MINIX around ! include files that minix doesn't provide, like and ! ! ! lib/readline/terminal.c ! - removed `outchar' function; use _rl_output_character_function in ! its place ! support/config.guess ! - changes to recognize HP_ARCH of `hppa2.0' ! test.c ! - new `-N' option: `test -N file' returns true if FILE exists and ! has been modified since it was last accessed ! doc/{bash.{1,html},bashref.texi} ! - documented new `test -N' option ! 7/22 ! ---- ! aclocal.m4 ! - prefer /var/spool/mail to /usr/spool/mail in BASH_DEFAULT_MAIL_DIR ! [in bash-2.01.1] ! lib/readline/{complete,bind}.c ! - new readline variable, print-completions-horizontally, which causes ! matches to be printed across the screen (like `ls -x') rather than ! up-and-down (like `ls') ! - new readline variable, completion-ignore-case, which causes filename ! completion and matching to be performed case-insensitively ! ! doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo ! - documented new print-completions-horizontally variable ! - documented new completion-ignore-case variable ! _distribution, Makefile.in ! - bumped the version number up to 2.02-alpha1 ! bracecomp.c ! - fixes so that the braces are not quoted by the filename quoting ! function when complete-into-braces is executed with M-{. The ! brace completion functions do filename quoting themselves ! [in bash-2.01.1] ! pathexp.c ! - changed quote_string_for_globbing so that it takes a flags word ! as its second argument ! pathexp.h ! - defines for flags passed to quote_string_for_globbing ! subst.c,execute_cmd.c ! - changed calls to quote_string_for_globbing to pass the correct ! flag arguments ! expr.c ! - added a `**' binary operator to do exponentiation (2**16 == 65536). ! precedence is lower than arithmetic operators, higher than unary ! operators (2**16-1 == 65535) ! doc/{bash.{1,html},bashref.texi} ! - documented new `**' arithmetic binary operator ! 7/24 ! ---- ! shell.c ! - added new (currently undocumented) `--wordexp' option to do the ! job required by POSIX.2 wordexp(). If -n is supplied along with ! --wordexp, command substitution is disallowed and the shell ! exits with a status of 125 if one is attempted. If there is an ! expansion error, the shell exits with a status of 127. If there ! is a shell parsing error, the shell exits with a status of 126. ! Otherwise, the exit status is 0. The current output is ! ! number of words\n ! number of bytes\n ! expanded words, one per line, separated by newlines ! ! This will have to be changed when an interface to glibc is coded ! ! 7/28 ! ---- ! hashcmd.h ! - reduced the default size of the filename hash table from 631 ! to 107 ! ! sig.c ! - don't call initialize_siglist if HAVE_UNDER_SYS_SIGLIST is defined ! [in bash-2.01.1] ! siglist.c ! - don't compile this file if HAVE_UNDER_SYS_SIGLIST is defined ! [in bash-2.01.1] ! variables.c ! - fix to make $RANDOM work better in subshells ! [in bash-2.01.1] ! aclocal.m4 ! - new macro, BASH_DECL_UNDER_SYS_SIGLIST, looks for _sys_siglist in ! and , defines UNDER_SYS_SIGLIST_DECLARED if ! found ! [in bash-2.01.1] ! - change BASH_UNDER_SYS_SIGLIST to require BASH_DECL_UNDER_SYS_SIGLIST, ! like BASH_SYS_SIGLIST requires AC_DECL_SYS_SIGLIST ! [in bash-2.01.1] config.h.in ! - add a line for UNDER_SYS_SIGLIST_DECLARED ! [in bash-2.01.1] ! configure.in ! - make sure that SVR4_2 is defined for machines that have $host_os ! sysv4.2* (e.g., sysv4.2MP) as well as $host == sysv4.2 ! [in bash-2.01.1] ! 7/29 ---- ! command.h ! - new command type, ARITH_COM, used to create and execute a ((...)) ! command without translating it into let "..." ! parse.y ! - changes to the grammar and lexer so that ((...)) is parsed as a ! command of type ARITH_CMD. An ARITH_CMD is a WORD_LIST, for ! future expansion, even though only the first word is used ! ! make_cmd.c, make_cmd.h ! - definition and declaration of a function to build an arithmetic ! command ! dispose_cmd.c ! - added code to dispose of arithmetic commands ! print_cmd.c ! - added code to print arithmetic commands, both `regularly' and ! when they're being traced with `set -x' ! externs.h ! - extern declaration for xtrace_print_arith_cmd ! copy_cmd.c ! - added code to copy arithmetic commands ! execute_cmd.c ! - added code to directly execute arithmetic commands -- they are ! a shell_control_structure, so just about everything like ! redirections and piping is taken care of by the boilerplate code. ! All that's needed is to expand the expression (which is within ! double quotes -- added by parse.y:parse_arith_cmd()), print it ! if tracing is enabled, call the expression evaluator, and return ! an appropriate result ! 7/30 ! ---- ! input.c ! - new function, set_buffered_stream(fd, bp), sets the buffered stream ! associated with FD to BP and returns the old buffered stream ! input.h ! - extern declaration for set_buffered_stream ! parse.y ! - call set_buffered_stream rather than manipulating the BUFFERS array ! directly ! shell.c ! - unset_bash_input now takes an argument, CHECK_ZERO. This tells it ! whether to check whether default_buffered_input is >= 0 or just > 0 ! externs.h ! - changed extern declaration for unset_bash_input ! execute_cmd.c, jobs.c, nojobs.c ! - changed calls to unset_bash_input to add appropriate argument ! input.h ! - #undef B_* before defining them as flag values for b_flags. Some ! systems, like SVR4, have a B_ERROR define in a file included by ! jobs.c and nojobs.c, and it causes a warning ! 7/31 ! ---- ! fnmatch.c ! - rewrote most of fnmatch(), so that it now implements ksh-88 style ! pattern matching (`[@+*?!](patlist)') if the FNM_EXTMATCH flag ! is set ! fnmatch.h ! - added a define for FNM_EXTMATCH ! ! 8/4 ! --- ! lib/readline/display.c ! - fixed _rl_redisplay_after_sigwinch () so that it really redisplays ! only the portion after the final newline of a multi-line prompt ! [in bash-2.01.1] ! ! bashline.c ! - attempt_shell_completion no longer returns matches if a glob pattern ! matches more than one filename -- it caused too many problems ! [in bash-2.01.1] ! 8/5 ! --- ! lib/glob/glob.c ! - updated glob_pattern_p so that the extended matching operators ! are recognized ! pathexp.c ! - udpated unquoted_glob_pattern_p so that the extended matching ! operators are recognized ! - udpated quote_globbing_chars so that the extended matching ! operators are recognized and quoted appropriately ! subst.c ! - updated match_pattern_char so that the extended matching operators ! are recognized ! parse.y ! - updated read_token_word so that it parses an extended matching ! pattern as a single word ! jobs.c ! - if a job is suspended with SIGTSTP, and the user has set ! checkwinsize with `shopt', update the window size ! [in bash-2.01.1] ! ! pathexp.c, pathexp.h ! - new global variable, extended_glob, controls whether the extended ! pattern matching features are enabled ! ! pathexp.h ! - new define, FNMATCH_EXTFLAG, to be OR'd with other values for ! flags argument to fnmatch to enable the extended pattern matching ! features if extended_glob is set ! ! {pathexp,execute_cmd,bashhist,subst,test}.c, builtins/help.def ! - changed calls to fnmatch to add FNMATCH_EXTFLAG to the flags arg if ! extended_glob is non-zero ! lib/glob/glob.c ! - changed flags arg passed to fnmatch to include FNM_EXTMATCH if ! extended_glob is non-zero (#ifdef SHELL) ! 8/6 ! --- ! builtins/shopt.def ! - added a new `extglob' shell option, controls the value of ! extended_glob ! 8/7 ! --- ! doc/{bash.{1,html},bashref.texi} ! - documented new extended pattern matching operators and the `extglob' ! shell option ! tests/{extglob.{tests,right},run-extglob} ! - test suite for the new extended globbing features ! 8/8 ! --- ! parse.y, pathexp.h, lib/glob/fnmatch.c ! - made the extended globbing code #ifdef EXTENDED_GLOB ! config.h.in ! - added a line for EXTENDED_GLOB, controlled by configure ! configure.in ! - new option, --enable-extended-glob, controls defining of ! EXTENDED_GLOB (on by default) ! doc/bashref.texi ! - documented new `configure' `--enable-extended-glob' option ! 8/11 ! ---- ! builtins/printf.def ! - new `printf' builtin, implemented according to POSIX.2 spec ! for printf(1) ! Makefile.in,builtins/Makefile.in ! - added necessary stuff for new printf builtin ! 8/12 ! ---- ! lib/readline/isearch.c ! - change to make ^G interrupt the incremental search correctly ! [in bash-2.01.1] ! configure.in, config.h.in ! - configure now checks for the availability of strtoul(3) ! builtins/printf.def ! - use strtoul for the `%o', `%u', `%x', and `%X' formats if it ! is available ! 8/13 ---- ! tests/{printf.{right,tests},run-printf} ! - extensive test suite for the new `printf' builtin ! builtins/Makefile.in ! - change so that `builtext.h' is not recreated every time the source ! file for a builtin is changed if the contents are the same. This ! keeps many files from being recompiled ! 8/14 ! ---- ! subst.c ! - changed verify_substring_values so that it returns -1 for substring ! range errors, 0 for expression errors, and 1 for success ! [in bash-2.01.1] ! - changed parameter_brace_substring to return an error if ! verify_substring_values returns 0, and a null string if it returns ! -1. This matches the ksh93 behavior ! [in bash-2.01.1] ! trap.c ! - changed decode_signal so that it makes sure the first three ! characters of a signal name are `SIG' before allowing the `SIG' ! prefix to be omitted. This is so a signal spec of `T' does not ! match `EXIT', for instance ! [in bash-2.01.1] ! ! builtins/trap.def ! - make sure that showtrap() displays traps for signals with unknown ! names using the signal number ! [in bash-2.01.1] ! shell.c ! - make sure that `bash -r' doesn't turn on the restricted mode until ! after the startup files are executed ! [in bash-2.01.1] ! doc/{bash.{1,html},bashref.texi} ! - documented printf builtin ! 8/15 ! ---- ! general.c ! - added \xNNN escape to ansicstr -- NNN are up to three hex digits. ! This affects $'...', `echo -e', and printf ! builtins/printf.def ! - added \xNNN escape to bexpand -- NNN are up to three hex digits. ! This affects printf's `%b' conversion specifier ! doc/{bash.{1,html},bashref.texi} ! - documented new \xNNN escape sequence for echo, $'...', and printf ! builtins/setattr.def ! - make sure that a variable found in the temp environment does not ! cause a null string to be assigned by bind_variable (e.g., ! foo="" export foo ! ) ! [in bash-2.01.1] ! 8/18 ---- ! subst.c ! - fixed a bug that sometimes caused bad memory (pointer into an ! allocated block) to be passed to free when doing arithmetic ! substitution. Bug report from stevet@myofb.org ! [in bash-2.01.1] ! 8/19 ! ---- ! subst.c ! - considerable changes: moved the code that expands a single ! $... parameter expansion into a separate function: param_expand() ! This function returns a string, which may contain characters ! quoted with CTLESC or CTLNUL without doing word splitting ! - changed expand_word_internal to not remove the expansion of "$*" ! if the number of positional parameters is > 0 ! - changed the '"' case of expand_word_internal to remove quoted ! nulls from the resultant word if the expansion was not "$@", and ! the word is not a quoted null string ([] == CTLNUL, [1] == '\0') ! ! subst.c, variables.c ! - moved the code that handles special variables from subst.c to ! variables.c ! 8/20 ---- subst.c ! - rearranged the source a bit to group functions with similar ! operation together ! - fixed parameter_brace_expand so that it no longer allows ! indirect expansion of `special' variables ! - fixed parameter_brace_expand so taking the length of some of ! the shell's special parameters works again ! - moved all of the code that computes the length of a shell ! parameter (the ${#xxx} expansion) into parameter_brace_expand_length. ! Previously, the code that handled the lengths of the shell's ! special parameters was in parameter_brace_expand_word ! - valid indirect expansions are now only variable names or positional ! parameters ! 8/21 ! ---- ! subst.c ! - fixed param_expand to raise an expansion error if $! is being ! expanded and no asynchronous processes have been created ! - an expression error in a $((...)) arithmetic expansion now causes ! a non-interactive shell running in POSIX mode to exit ! - relaxed change of 8/20 to allow indirect references to $#, $@, $* ! builtins/bashref.texi ! - documented new posix-mode exit on invalid expressions in $((...)) ! lib/readline/complete.c ! - don't call rl_strpbrk unless rl_filename_quote_characters is not ! NULL -- strpbrk requires non-NULL arguments ! [in bash-2.01.1] ! 8/22 ---- ! bashline.c ! - don't make `history-expand-line' a bindable command unless ! BANG_HISTORY is defined, and don't compile the code for that ! command in unless BANG_HISTORY is defined ! - make history_expand_line(), tcsh_magic_space(), alias_expand_line(), ! and history_and_alias_expand_line() int-returning functions that ! return 0 for success and non-zero on error. This allows ! tcsh_magic_space() to just call history_expand_line() and insert ! a space if that returns successfully ! - `magic-space' is now a bindable readline command ! ! doc/bash.{1,html}, lib/readline/doc/rluser.texinfo ! - documented new `magic-space' bindable readline command ! 8/25 ---- ! parse.y ! - fixed decode_prompt_string so that values of $PWD longer than ! PATH_MAX don't cause buffer overruns (char t_string[PATH_MAX]) ! [in bash-2.01.1] ! ! general.c ! - fixed polite_directory_format so that values of $HOME longer ! than PATH_MAX don't cause buffer overruns (char tdir[PATH_MAX]) ! [in bash-2.01.1] ! subst.c ! - fix to expansion of $* so that the positional parameters are ! separated by the first character of $IFS, even when the expansion ! is not within double quotes, so the correct split is still ! performed even when IFS does not contain a space. Works for ! ${*}, too ! - fix to expansion of $@ so that the positional parameters are ! separated by the first character of $IFS, even when the expansion ! is not within double quotes, so the correct split is still ! performed even when IFS does not contain a space. Works for ! ${@}, too ! - new function, string_list_dollar_at(), which is to $@ as ! string_list_dollar_star is to $* ! - fixed expansion of $@ so that splitting is still done even if ! IFS is unset or NULL, as POSIX.2 specifies (section 3.5.2) ! - fixed expansion of $* so that it expands to multiple words if there ! is more than one positional parameter, just like $@, even if ! IFS is unset or NULL ! - new function list_quote_escapes, quotes (with CTLESC) all ! CTLESC and CTLNUL characters in each member of the list ! tests/dollar-{at,star}.sh ! - combined into dollar-at-star, changed run-dollars accordingly ! 8/26 ---- ! Makefile.in ! - make the `tests' target use $(SHELL) instead of hardcoding `sh' ! 8/29 ! ---- ! subst.c ! - expand_word_list_internal now takes a flags word as the second ! argument, telling which expansions to perform on the WORD_LIST ! - broke expand_word_list_internal into several functions: one ! each to do brace expansion, glob expansion, and the `normal' ! shell expansions ! - new extern function: expand_words_shellexp() to perform the ! `normal' shell expansions on a WORD_LIST ! subst.h ! - extern declaration for expand_words_shellexp ! bashline.c ! - fixed a problem with attempt_shell_completion where it attempted ! to refer to rl_line_buffer[-1] (completion at the start of the ! line, which means that ti == -1, which means that the test for ! rl_line_buffer[ti] at line 715 was an array bounds error ! [in bash-2.01.1] ! eval.c ! - new function, parse_string_to_word_list(), which takes a string ! and runs it through the parser, returning the resultant word ! list ! externs.h ! - new extern declaration for parse_string_to_word_list() ! variables.c ! - change assign_array_var_from_string to first split the string ! between the parens on whitespace, then expand the resultant ! list of words with all the shell expansions before doing the ! assignment ! 9/4 ! --- ! redir.c, redir.h ! - redirection_error is no longer a static function ! builtins/evalstring.c ! - changes to handle $( < filename ) (equivalent to $(cat filename)) ! as in ksh ! lib/readline/bind.c ! - added two new functions: rl_unbind_function_in_map(func, map), ! which unbinds all keys that execute FUNC in MAP; and ! rl_unbind_command_in_map(command, map), which unbinds all keys ! bound to COMMAND in MAP ! lib/readline/readline.h ! - extern declarations for rl_unbind_{function,command}_in_map ! lib/readline/doc/rltech.texi ! - documented rl_unbind_{function,command}_in_map ! builtins/bind.def ! - added a new option, -u FUNCNAME, which unbinds all key sequences ! bound to FUNCNAME in the specified (or current) keymap ! doc/{bash.{1,html},bashref.texi} ! - documented new $( < filename ) command substitution ! - documented new bind -u FUNCNAME option ! 9/5 ! --- ! shell.c ! - send SIGHUP to all jobs when an interactive login shell exits if ! the variable `hup_on_exit' is non-zero ! - modified run_startup_files so that if `NON_INTERACTIVE_LOGIN_SHELLS' ! is #define'd (perhaps in config.h.top, though there is nothing there ! for it), all login shells (interactive and non-interactive) run ! /etc/profile and one of the per-user login shell startup files ! builtins/shopt.def ! - new shopt option `huponexit' to control the value of hup_on_exit ! doc/{bash.{1,html},bashref.texi} ! - documented new `huponexit' shell option ! 9/8 ! --- ! builtins/common.c ! - changed contains_shell_metas to return 1 if a tilde appears at the ! start of a string or after a `=' or `:' ! - changed backslash_quote to quote a tilde if it appears at the start ! of a string or after a `=' or `:' ! lib/readline/complete.c ! - moved rl_tilde_expand to util.c; it doesn't really have anything ! to do with completion ! - moved insert_text to readline.c, renamed it _rl_replace_text (since ! that's really what it does), changed callers ! - moved code that postprocesses the list of completion matches into ! a new function: postprocess_matches ! - new implementation of tcsh-like menu completion in a single new ! function: rl_menu_complete ! ! lib/readline/{funmap.c,readline.h} ! - necessary declarations for binding rl_menu_complete to the ! new `menu-complete' command ! doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo ! - documented new `menu-complete' bindable readline command ! 9/9 ! --- ! jobs.c ! - delete_job should print a warning only if subshell_environment ! is 0, so we don't print bogus warnings when shell scripts without ! a leading #! are executed ! 9/10 ---- ! builtins/read.def ! - fixed the code so that the `read' is automatically restarted when ! it returns -1 with errno == EINTR. SIGINT is handled by the ! interrupt handler, since interrupt_immediately is set to 1, so ! this handles things like SIGCHLD ! [in bash-2.01.1] ! 9/11 ! ---- ! test.c ! - reorganized the code slightly to make it easier to add the ksh-like ! [[...]] compound command ! test.h ! - new file, with extern declarations for functions available in test.c ! externs.h ! - moved declaration of test_command to test.h ! builtins/test.def ! - include `test.h' ! 9/16 ---- ! {command,make_cmd,dispose_cmd,externs,subst}.h ! parse.y, subst.c ! {make,dispose,copy,print,execute}_cmd.c ! - changes to add the new ksh-93 compatible [[...]] conditional command configure.in ! - new enable option, --enable-cond-command, to compile in the [[...]] ! command code ! config.h.in ! - new #define, COND_COMMAND, to compile in the [[...]] command code ! tests/{run-cond,cond.{tests,right}} ! - test suite for the new [[...]] command ! {builtins,lib/{readline,glob,tilde}}/Makefile.in ! - explicit dependencies for .o files on .c files for losing makes ! like Solaris ! ! doc/{bash.{1,html},bashref.texi} ! - documented the new `[[' compound command ! - documented the test/[ builtin behavior based on the number of ! arguments in the description of the builtin ! - made a new section for conditional expressions that just lists ! the available primaries -- the connectives and other operators ! are listed in the description of the [[ command and the test/[ ! builtin ! 9/18 ! ---- ! builtins/set.def ! - minus_o_option_commands is now a global function so the shopt ! code can use it ! - minus_o_option_commands now takes an argument telling it which ! options to print, just like list_minus_o_options ! - new function, print_minus_o_option, which prints the value of ! a `set -o' option either in the traditional format or in the ! format used by `set +o' ! - changed list_minus_o_opts and minus_o_option_commands to call ! print_minus_o_option ! builtins/shopt.def ! - `shopt -p' now causes output to be printed in a format reusable ! as input (the format is a series of shopt commands, like the ! output of `set +o') ! - fixed a bug that made `shopt -so' and `shopt -uo' not work ! - fixed list_shopt_o_options so that `shopt -op' acts like `set +o' ! - fixed list_shopt_o_options to that `shopt -op optname' prints the ! value of optname in a reusable format ! - fixed list_some_o_options so that `shopt -ops' and `shopt -opu' ! work and display output in a reusable format ! 9/19 ! ---- ! doc/{bash.{1,html},bashref.texi} ! - documented new `shopt -p' behavior ! shell.c ! - made `bash +o' display the same output as `set +o' and then ! start an interactive shell (previously `bash -o' and `bash +o' ! displayed the same thing) ! builtins/common.h ! - added prototypes to the extern function declarations ! 9/22 ! ---- ! builtins/evalstring.c ! - fixed the DISCARD case of the jump_to_top_level so that it ! doesn't try to call dispose_command(command) after the ! `pe_dispose' unwind frame gets run, since that disposes the ! command ! ! 9/23 ! ---- ! test.[ch] ! - test_eaccess is now a global function so that globbing code can ! use it ! lib/glob/glob.c ! - rewrote glob_vector to be slightly more efficient and to not ! read the directory if the filename pattern does not contain ! any globbing chars. This satisfies the POSIX requirement that ! read permission is not required for a directory when the ! pathname component does not contain a pattern character (bug ! reported by jsm28@cam.ac.uk) ! subst.c ! - fixed parameter_brace_expand so that ${array[@]} and ${array[*]} ! behave correctly when IFS is unset or set to something that does ! not contain a space (they should result in separate words, just ! like $@ and $*) ! ! tests/{run-array2,array-at-star,array2.right} ! - tests for the expansions of ${array[@]} and ${array[*]}, derived ! from the tests in dollar-at-star ! 9/24 ! ---- ! jobs.c ! - fixed cleanup_dead_jobs so that it doesn't remove the job ! containing last_asynchronous_pid from the job table. This ! fixes the POSIX.2 `wait' requirement problem - 9/25 - ---- parse.y ! - added `\r' escape sequence to the prompt expansion code lib/readline/chardefs.h ! - added defines for ISOCTAL, OCTVALUE, isxdigit (if not defined), ! and HEXVALUE ! lib/readline/bind.c ! - added `normal' echo/printf-like backslash escapes to the ! key sequence translation code, with the addition that \d ! expands to RUBOUT. This means that key sequence definitions ! (before the `:') and macro values may contain these special ! backslash-escape sequences ! - now that we can translate octal escape sequences in key bindings, ! change _rl_get_keyname so that it turns characters with values ! 128-159 inclusive into octal escape sequences (\200-\237), since ! those characters are not ASCII or ISO Latin 1 ! ! doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo ! - documented new backslash escapes for readline key sequence and ! macro translation ! builtins/pushd.def ! - new function, get_dirstack_from_string(char *string), returns an ! element from the directory stack or null, treating the argument ! exactly as `dirs string' would, with the exception that if ! the first character of `string' is not `+' or `-', a `+' is ! assumed ! builtins/common.h ! - new extern declaration for get_dirstack_from_string ! general.c ! - added code to bash_special_tilde_expansions to get the expansion ! using get_dirstack_from_string() if the first character of the ! tilde-prefix is a digit or the first character is a `+' or `-' ! and the second is a digit ! tests/dstack.{tests,right} ! - renamed from dirstack.{tests,right} ! tests/dtack2.{tests,right} ! - new tests for the directory stack tilde expansion code ! tests/run-dirstack ! - now runs both dstack and dstack2 ! 10/3 ! ---- ! trap.c ! - reordered header file inclusion for irix 4 ! execute_cmd.c ! - fixed select_query so that a reply that is not a number is treated ! the same as a numeric reply that is out of range ! lib/readline/util.c ! - added a backwards-compatibility definition of _rl_savestring() ! builtins/set.def ! - initialize_shell_options now takes an argument saying whether or ! not we should parse $SHELLOPTS from the environment. The shell ! does not parse the value if it's restricted, running setuid, or ! running in `privileged mode' ! shell.c ! - change call to initialize_shell_options to add the correct argument ! builtins/common.h ! - changed extern declaration for initialize_shell_options ! doc/{bash.{1,html},bashref.texi} ! - added note that the shell ignores $SHELLOPTS in the environment at ! startup if running in privileged mode ! - added note that the restricted shell does not parse $SHELLOPTS from ! the environment at startup - 10/6 - ---- aclocal.m4 ! - change BASH_RLIMIT_TYPE so that it looks for rlim_t in ! as well as , for Solaris 2.6 ! - new macro, BASH_LARGE_FILE_SUPPORT, to enable special compilation ! options for large files on Solaris 2.6 (from eggert@twinsun.com) ! mailcheck.c ! - the `file_size' member of the FILEINFO struct should be of ! type `off_t' ! - the `size' variable in file_has_grown should be of type `off_t' ! - the RESET_MAIL_FILE macro should initialize file_size to 0, not 0L ! ! builtins/Makefile.in ! - LDFLAGS and LOCAL_LDFLAGS are now set by configure ! - `mkbuiltins' is now created from `mkbuiltins.o' instead of directly ! from the source to the executable ! builtins/evalfile.c ! - fixed _evalfile so that it handles large files correctly on ! systems where the st_size member of `struct stat' will not fit ! into an `int' ! builtins/mkbuiltins.c ! - don't assume that st_size fits into an int ! input.[ch] ! - the `b_size' member of a struct BSTREAM is now of type `size_t' ! - changed third argument to make_buffered_stream to size_t; changed ! caller ! - changed `size' variable in fd_to_buffered_stream to type `size_t' ! general.h ! - include if HAVE_SYS_RESOURCE_H and RLIMTYPE are ! both defined, for possible necessary definition of RLIMTYPE ! (e.g., on Solaris 2.6) ! ! {execute_cmd,jobs}.c, builtins/times.def ! - don't include explicitly if RLIMTYPE is defined, ! since general.h will include it in that case ! lib/readline/bind.c ! - new function, char *_rl_read_file(filename, sizep), which reads ! FILENAME into a malloced buffer, returning the buffer and the ! size of the buffer in *SIZEP ! ! lib/readline/histfile.c ! - changed read_history_range and history_truncate_file to handle ! large files ! hashcmd.c ! - find_hashed_filename should not add `./' to the front of a pathname ! that already begins with `./' ! 10/8 ! ---- ! support/config.sub ! - recognize `hppa2.0' as a valid machine architecture ! aclocal.m4 ! - changed BASH_CHECK_LIB_TERMCAP so that `gnutermcap' is not chosen ! if `$prefer_curses' is set to something ! bashhist.c ! - don't use HISTCONTROL or HISTIGNORE to remove lines from the ! second and subsequent lines of a multi-line command ! (current_command_line_count > 1). Old code did this only when ! command-oriented-history was enabled ! ! doc/{bash.{1,html},bashref.texi} ! - changed descriptions of HISTCONTROL and HISTIGNORE to state that ! these variables are not applied to the second and subsequent ! lines of a multi-line command ! ! builtins/hash.def, {copy,dispose}_cmd.c ! - include "bashtypes.h" -- cray machines need it because of their ! oddball definition of `word' ! configure.in ! - changed check of ${host_cpu} to check for `*cray*' and `*Cray*' ! when deciding whether to include the GNU malloc, since it ! seems that ${host_cpu} gets set to `CrayYMP' ! 10/9 ! ---- ! configure.in ! - look for strtod and strtol in libc ! - make lib/sh directory in build directory if not there ! - create lib/sh/Makefile ! config.h.in ! - added HAVE_STRTOD and HAVE_STRTOL ! Makefile.in ! - changes for lib/sh/libsh.a (shell library) builtins/printf.def ! - took out the `#ifdef STRTOUL' code, since strtoul is in libsh.a, ! and will be resolved from there if it's not in libc variables.c ! - call strtol() instead of string_to_long() ! general.c, general.h ! - removed string_to_long ! - changed legal_number to use strtol so it correctly sets errno ! to ERANGE on overflow ! - moved bash_getcwd_errstr here from lib/sh/oslib.c ! externs.h ! - moved extern declarations for functions defined in libsh to a ! separate section of the file, added extern declarations for ! other functions in libsh ! builtins/ulimit.def ! - changed macro definition for string_to_rlimtype to call strtol ! directly instead of string_to_long ! lib/sh/clktck.c ! - moved get_clock_tck to its own file, since it's compiled in ! unconditionally ! 10/10 ----- ! lib/sh/getenv.c ! - moved getenv() and __getenv() here from lib/sh/oslib.c ! lib/sh/{setlinebuf,strerror,strcasecmp}.c ! - moved {setlinebuf,strerror,strcasecmp}() from oslib.c to ! individual files ! lib/sh/Makefile.in, Makefile.in ! - changes for new files in lib/sh ! aclocal.m4 ! - new macro BASH_SYS_RESTARTABLE_SYSCALLS, which does what ! AC_SYS_RESTARTABLE_SYSCALLS does, but using posix sigaction() ! ! configure.in ! - call BASH_SYS_RESTARTABLE_SYSCALLS if ac_cv_sys_restartable_syscalls ! is `no' ! ! 10/13 ! ----- ! builtins/jobs.def ! - catch out-of-range jobs better in disown_builtin ! ! configure.in ! - don't build with GNU malloc on cygwin32 ! ! trap.c ! - change signal_name to handle the case where signal_names[sig] is ! NULL, which can happen on cygwin32 ! ! execute_cmd.c ! - changes to do_piping to make pipes text mode (O_TEXT) on cygwin32 ! ! cross-build ! - new directory with cache files and other stuff for cross-compiling ! bash (currently only for building for cygwin32 on a Unix machine) ! ! cross-build/cygwin32.cache ! - new file containing configuration variable assignments for ! cygwin32 that would otherwise require a default case for AC_TRY_RUN ! ! configure.in ! - source ${srcdir}/cross-build/cygwin32.cache on CYGWIN32 systems ! if we're cross-compiling on a unix machine ! - set $CC_FOR_BUILD for cygwin32 cross-compiling environment ! ! Makefile.in ! - CC_FOR_BUILD is now a variable set by configure ! ! builtins/mkbuiltins.c ! - only check for read(2) returning <= 0 in extract_info() (error ! and exit on < 0, warning and return on == 0) ! ! builtins/evalfile.c ! - only check for read(2) returning <= 0 in _evalfile() (error and ! and failure return on < 0, success on == 0 while short-circuting ! rest of operation) ! ! 10/14 ! ----- ! ! vprint.c ! - moved to lib/sh/vprint.c ! ! lib/sh/Makefile.in ! - added entries for vprint.[co] in the appropriate places ! ! cross-build/win32sig.h ! - a version of signames.h for cross-compiling for the CYGWIN32 ! environment on a Unix machine (from noer@cygnus.com) ! ! aclocal.m4 ! - made all cases of AC_TRY_RUN and AC_TRY_COMPILE have reasonable ! default cases for cross-compiling, and tell the user what they are ! ! Makefile.in ! - removed vprint.c from shell sources and vprint.o from shell ! objects ! - added a level of indirection for signames.h -- the variable ! SIGNAMES_H is set by configure to either `lsignames.h' or ! a file for a cross-compilation environment (currently only ! the cygwin32 stuff is supported). Then that file is copied ! to `signames.h'. `lsignames.h' is created by `mksignames' as ! was previously used to create signames.h directly ! ! configure.in ! - set SIGNAMES_H to either `$(srcdir)/cross-build/win32sig.h' or ! `lsignames.h' as appropriate, substitute into Makefile ! ! 10/15 ! ----- ! builtins/Makefile.in ! - CC_FOR_BUILD is now set by configure and used to build mkbuiltins ! and psize.aux ! ! variables.h ! - new variable attribute `att_tempvar', set if the SHELL_VAR * was ! constructed on the fly from the temporary environment ! ! variables.c ! - find_name_in_env_array now sets the `att_tempvar' attribute on ! the SHELL_VAR it creates ! ! findcmd.c ! - search_for_command now disposes the SHELL_VAR created by searching ! the temporary environment for $PATH, if it is found there ! - _find_user_command_internal also disposes of the SHELL_VAR if it ! has the `att_tempvar' attribute set ! ! builtins/setattr.c ! - show_name_attributes looks in the temporary environemnt, so it needs ! to dispose the SHELL_VAR if it has the att_tempvar attribute set ! ! subst.c ! - parameter_brace_expand_word now disposes of the SHELL_VAR returned ! by find_variable if it has the att_tempvar attribute set ! - ditto for param_expand and word_split ! ! builtins/kill.def ! - disallow null pid arguments instead of treating them as 0 ! - display a usage message and return failure if no pid or job ! arguments are supplied ! ! 10/16 ! ----- ! builtins/declare.def ! - make `var=value declare -x var' behave the same as ! `var=value export var' and `var=value declare -r var' behave the ! same as `var=value readonly var', now that we have the `tempvar' ! attribute ! ! 10/22 ! ----- ! jobs.c ! - non-interactive shells shouldn't report jobs killed by a SIGINT, ! even if the standard output is to a terminal ! - pretty_print_job should add a CR at the end of its output if the ! shell is interactive and asynchronous notification is being ! performed. This fixes the problem with extra CRs in the output ! of $(jobs) ! ! general.c ! - changed canonicalize_pathname to change `//' into `/', but leave ! other pathnames starting with two consecutive slashes alone ! ! 10/27 ! ----- ! ! lib/readline/histexpand.c ! - fixed history_expand so that the appearance of the history ! comment character at the beginning of a word inhibits history ! expansion for the rest of the line ! ! 10/29 ! ----- ! jobs.c,variables.c ! - moved set_pipestatus_array to variables.c ! ! variables.c ! - new function, set_pipestatus_from_exit(int), which sets the ! PIPESTATUS variable from a command's exit status ! ! variables.h ! - extern declarations for set_pipestatus_from_exit and ! set_pipestatus_array ! ! execute_cmd.c ! - fixed execute_simple_command to call set_pipestatus_from_exit ! if a foreground builtin or function, or a foreground null ! command is executed ! ! 10/31 ! ----- ! shell.c ! - fixed run_startup_files to detect being run by sshd, and treat ! that case as equivalent to being run by rshd ! ! 11/3 ! ---- ! builtins/set.def ! - make sure `set -a' doesn't cause SHELLOPTS to be exported when ! a change is made to one of the shell options ! ! 11/4 ! ---- ! pathexp.c ! - fix to shell_glob_filename in the code that uses a POSIX glob ! library ! ! 11/5 ! ---- ! jobs.c ! - fix cleanup_dead_jobs to hang onto the job corresponding to ! last_asynchronous_pid only if the shell is not interactive ! (this still has the problem that until a new async process ! is started, the job will stay in the jobs table) ! ! configure.in,aclocal.m4 ! - added a new macro, BASH_TYPE_U_INT32_T, to check for u_int32_t ! separately from int32_t, since there are systems (HP-UX 10.20) ! that have a define for the latter but not the former ! ! 11/6 ! ---- ! jobs.c ! - cleanup_dead_jobs no longer checks whether the job it is deleting ! corresponds to last_asynchronous_pid ! - notify_of_job_status and mark_dead_jobs_as_notified now will not ! mark the job corresponding to last_asynchronous_pid as notified ! if the shell is not interactive ! - wait_for_single_pid, if told to wait for last_asynchronous_pid, ! or the job of which it is a member, will take care of marking ! the job as notified after calling wait_for and collecting the ! status. This means that two successive `wait' calls for $! will ! succeed the first time and fail the second, as POSIX.2 specifies ! (take this code out if it causes problems) ! ! 11/7 ! ---- ! jobs.c ! - wait_for_job, if told to wait for the job corresponding to the ! last async pid, will mark the job as notified after waiting for ! it and collecting the status ! ! general.h ! - fixed MEMBER macro to avoid reading past end of S (it used to ! test s[1] before s[0], which is an error if s == "") ! ! subst.c ! - expand_word_internal should free ISTRING before returning if ! param_expand returns an error ! - parameter_brace_expand_word should free the memory it allocates ! and passes to param_expand ! ! execute_cmd.c ! - execute_arith_command should call dispose_words on the list ! returned by expand_words ! ! parse.y ! - after calling parse_arith_command, read_token needs to free the ! string value that parse_arith_command fills in, since make_word ! makes a copy of the string it's passed ! ! 11/10 ! ----- ! subst.c ! - cond_expand_word needs to free the value returned by string_list ! after it is run through quote_string_for_globbing ! ! parse.y ! - make sure cond_term frees yylval.word if it is just a `!' and ! it's parsed as a term negation operator ! ! variables.c ! - assign_array_var_from_string needs to free the word list returned ! by parse_string_to_word_list after calling expand_words_shellexp ! on it ! ! execute_cmd.c ! - changed execute_simple_command to avoid saving the_printed_command ! into command_line until just before it's needed. This should save ! time and prevent memory leaks on errors, but it must be watched ! closely to make sure that the_printed_command doesn't change out ! from under execute_simple_command before we copy it ! ! 11/12 ! ----- ! builtins/alias.def ! - alias and unalias should print error messages when passed an ! argument that is not an alias for printing or deletion, ! respectively, even if the shell is not interactive ! ! builtins/exit.def ! - `logout' will no longer exit a non-login non-interactive shell ! ! 11/17 ! ----- ! lib/readline/nls.c ! - add `koi8-r' as a legal LANG value ! ! builtins/alias.def ! - if `alias' or `alias -p' is executed when no aliases are defined, ! the return status should be 0, according to POSIX.2 ! ! 11/18 ! ----- ! subst.c ! - changed a couple of calls to make_word_list (make_word(z), ...) ! to add_string_to_list (z, ...) ! ! execute_cmd.c ! - execute_cond_command now sets this_command_name to `[[' ! ! 11/21 ! ----- ! variables.c ! - all_visible_{function,variable}s and the functions they call ! should be compiled in only if READLINE is defined ! ! 11/24 ! ----- ! aclocal.m4 ! - remove some leading whitespace before preprocessor statements in ! BASH_KERNEL_RLIMIT_CHECK ! ! general.[ch] ! - fix declarations for group_member so the extern declaration in ! general.h agrees with the definition in general.c (fix from ! Andreas Schwab ) ! ! builtins/cd.def ! - print the new working directory if the shell is interactive ! and `cd -' succeeds ! - don't print the new working directory if it's found in $CDPATH ! if the shell is not interactive ! ! 11/25 ! ----- ! builtins/cd.def ! - fixes to bindpwd so that it copes with get_working_directory ! returning NULL (bug from schwab@issan.informatik.uni-dortmund.de) ! ! 12/2 ! ---- ! support/config.guess ! - add support for new OS name for SINIX SVR4 systems ! ! 12/3 ! ---- ! ! builtins/set.def ! - `unset' should check that a function it's trying to unset is a ! legal identifier only when in POSIX mode ! ! redir.c ! - changed here_document_to_fd to try and make sure the filename ! used for the here document is `more unique', since the old ! version would fail if two here documents were created in less ! than a second ! ! 12/4 ! ---- ! builtins/cd.def ! - POSIX.2 says that if CDPATH is used to find the new directory, ! and it's not relative to the current directory, the new directory ! name should be displayed on stdout even if the shell is not ! interactive ! ! 12/5 ! ---- ! parse.y ! - changes so that `time' is recognized as a reserved word only at ! the beginning of a pipeline (the last read token is one of 0, ! `;', `\n', `&&', `||', or `&'): ! ! o add clause to special_case_tokens that does the check ! and returns TIME if the conditions are met ! o take check for `TIME' out of CHECK_FOR_RESERVED_WORD, but ! leave it in the word_token_alist so that `type' still ! reports it as a `keyword' ! o new function, time_command_acceptable(), encapsulates the ! necessary conditions for `time' to be returned as a ! reserved word ! ! [bash-2.02-alpha1 frozen] ! ! 1/6/1998 ! -------- ! lib/glob/fnmatch.c ! - fix define for isgraph so that it does not return success for space ! - fix strcompare() so that the call to strcoll is surrounded by ! #ifdef HAVE_STRCOLL ! ! 1/7 ! --- ! lib/glob/fnmatch.c ! - the `test' argument to brackmatch() should be of type `unsigned char' ! ! 1/11 ! ---- ! execute_cmd.c ! - make sure execute_arith_command sets this_command_name to `((' ! ! 1/29 ! ---- ! parse.y ! - make sure the code for pushing and popping strings is compiled in ! if either ALIAS or DPAREN_ARITHMETIC is defined, because the (( ! code uses push_string in the case of a nested subshell ! - fix cond_skip_newlines so it resets the prompt to $PS2 while ! parsing an unfinished conditional command ! ! dispose_cmd.c, copy_cmd.c, builtins/hash.def ! - fixes to not use `word' as a variable name or the name of a ! function parameter to get around stuff in the Cray Unix include ! files ! ! builtins/printf.def ! - return failure immediately if an illegal format character is ! encountered ! ! redir.c ! - make the code that creates here-documents behave better if the ! file it's trying to create already exists for some reason ! ! lib/readline/complete.c ! - changed print_filename to return the number of characters it ! outputs; changed callers to use that value. This makes columns ! line up when printing completion listings with filenames ! containing control characters ! ! doc/bash.{1,html} ! - fixed a typo in the quote removal section ! ! 1/30 ! ---- ! parse.y ! - free_string_list() needs to check that t->expander is not NULL ! before trying to dereference it ! - reset_parser() doesn't need to set pushed_string_list to NULL ! after calling free_string_list(), since free_string_list does it ! ! configure.in,cross-build/cygwin32.cache ! - fixes from Geoff Noer for better cygwin32 cross-compilation ! ! tests/printf.{tests,right} ! - removed test for integer overflow, since error messages differ ! across systems ! ! pathexp.c ! - fixed a problem with unquoted_glob_pattern_p that made things ! like `x+*' not expand correctly ! ! lib/glob/glob.c ! - fixed a problem with glob_pattern_p that made things like `x+*' ! not expand correctly ! ! builtins/cd.def ! - if `cd -P' is executed, or `set -o physical' has been executed, ! the value of $PWD after a successful cd will not contain any ! symlinks, regardless of whether or not the shell is in posix mode ! ! 2/3 ! --- ! lib/readline/shell.c ! - include or as appropriate ! ! 2/4 ! --- ! builtins/common.c ! - take out the code in backslash_quote() that looks for tildes to ! quote, for the time being ! - if getcwd() fails, get_working_directory now prints the error ! message corresponding to errno in addition to the rest of the ! information -- TENTATIVE CHANGE ! ! lib/sh/getcwd.c ! - fix from Paul Smith to make getcwd() behave better in the presence ! of lstat(2) failures ! ! stringlib.c ! - when copying the replacement string into the output string being ! constructed, strsub() needs to make sure enough space for the ! replacement string is allocated, not the length of the pattern ! (use REPLEN, not PATLEN) ! ! mailcheck.c ! - make sure make_default_mailpath() has a valid current_user struct ! before trying to construct the default mailpath ! ! 2/5 ! --- ! execute_cmd.c ! - execute_builtin needs to call run_unwind_frame if the builtin is ! `source' or `eval' and we're not in a subshell rather than just ! calling dispose_builtin_env, because not all invocations copy ! the temporary_env to builtin_env, and nested calls to `.' require ! that the temporary env given to the first persist until that first ! call to `.' finishes ! ! parse.y ! - fix to history_delimiting_chars so that function definitions like ! ! function xyz ! { ! echo a ! } ! ! are saved to the history correctly when command_oriented_history ! is enabled, but literal_history is not ! ! bashhist.c ! - when calling internal_error from pre_process_line, use "%s" as ! the format with history_value as the argument to avoid the ! problem with the failed history event containing printf escape ! sequences ! ! 2/13 ! ---- ! shell.c ! - if shell_initialized is non-zero, don't line-buffer stderr and ! stdout in shell_initialize on SunOS5 -- see if this fixes the ! crashing problems for scripts without a leading `#! /bin/sh' ! ! 2/17 ! ---- ! bashline.c ! - added diffs to _ignore_completion_names from Andreas Schwab to ! complete names that would otherwise be ignored with FIGNORE if ! they are the only possible completions. Define NO_FORCE_FIGNORE ! if you want this; it is not defined by default ! ! 2/19 ! ---- ! support/bashbug.sh ! - changed the bug-bash address to bug-bash@gnu.org ! ! examples/loadables/Makefile.in ! - converted from `Makefile' with some boilerplate configure variables ! to find the source and build directories -- still requires some ! hand-editing to get the right CFLAGS and LDFLAGS for shared object ! creation ! ! Makefile.in ! - create examples/loadables/Makefile with `make makefiles' ! ! configure.in ! - create examples/loadables directory so `make makefiles' can write a ! makefile there ! ! general.c ! - make sure initialize_groups_array always sets things up so that ! ${GROUPS[0]} is the user's primary group (current_user.gid) ! ! 2/20 ! ---- ! lib/readline/parens.c ! - change the time delay when showing matching parens from 1.5 sec to ! 0.5 sec ! ! 2/23 ! ---- ! shell.c ! - isnetconn() should call getpeername(fd,...) instead of using 0 ! (though fileno(stdin) should always be 0) ! ! support/config.guess ! - updates from master FSF copy ! ! 2/24 ! ---- ! support/man2html.c ! - modified version of man2html to convert bash.1 into bash.html ! ! support/Makefile.in ! - simple Makefile to create man2html ! ! configure.in ! - make sure support/Makefile is created ! ! Makefile.in ! - make sure support/Makefile is created and cleaned ! ! doc/Makefile.in ! - changes to suffix rules to say how to make .html from .1 ! - `bash.html' is now a makefile target, created by man2html from ! bash.1 rather than being hand-modified ! ! lib/sh/itos.c, general.c ! - new file, itos() from general.c. This is here because the ! implementation of strerror in lib/sh/strerror.c uses itos() ! ! Makefile.in, lib/sh/Makefile.in ! - changes to add itos.c in libsh.a ! ! externs.h, general.h ! - moved extern declaration of itos() from general.h to externs.h ! ! aclocal.m4 ! - changes to BASH_LARGE_FILE_SUPPORT for the LFS64_* variables in ! Solaris 2.6 ! ! Makefile.in ! - make sure configure sets CPPFLAGS in this file ! ! 2/27 ! ---- ! ! builtins/command.def ! - make sure get_standard_path returns the value of ! STANDARD_UTILS_PATH if _CS_PATH is defined, but confstr(3) ! returns 0, indicating that _CS_PATH does not have a defined ! value ! ! bashhist.c ! - fixed bash_history_inhibit_expansion() so that extended globbing ! expressions like *.!(c) are not history expanded if extended_glob ! is non-zero (shopt -s extglob has been executed) ! ! 3/2 ! --- ! Makefile.in ! - changed release status to `beta1' ! ! [bash-2.02-beta1 frozen] ! ! 3/17 ! ---- ! lib/readline/vi_mode.c ! - make sure _rl_vi_save_insert() gets a non-null UNDO_LIST pointer ! before trying to do anything with it ! ! jobs.c ! - add a call to internal_warning from wait_for_job if the job is ! stopped ! - changed notify_of_job_status to not report pipelines exiting due to ! SIGPIPE in non-interactive shells if the shell is compiled with ! -DDONT_REPORT_SIGPIPE ! ! builtins/psize.sh ! - some fixes to try to avoid /tmp file races and surreptitious ! substitutions ! ! version.c ! - changed the extended version info to show 1998 as the copyright year ! ! parse.y ! - fixes from Andreas Schwab ! for compilation errors when the shell is configured --disable-alias ! but with dparen arithmetic enabled ! ! eval.c ! - fixes from Andreas Schwab to ! make sure the input stream is popped correctly when performing an ! array assignment in the command argument to `bash -c', e.g., ! `bash -c 'A=()'' ! ! builtins/kill.def ! - make `kill' with no arguments print a usage message and return a ! failure status ! ! alias.c ! - fix so that rd_token doesn't dump core when trying to do alias ! expansion on a line containing an unclosed single quote (fix from ! Vasco Pedro ) ! ! builtins/cd.def ! - fix so that using a non-empty directory from CDPATH to construct ! the name of the directory to change to results in an absolute ! pathname of the new current working directory being displayed, ! as POSIX.2 specifies ! ! support/bashbug.sh ! - a couple of small fixes to minimize /tmp file races -- the script ! is still raceable, the window is just smaller ! ! 3/24 ! ---- ! variables.c ! - make sure assign_in_env passes a malloc'd string to ! expand_string_unsplit, because some of the error code assumes that ! it is malloc'd and frees it (bug reported by Marko.Makela@HUT.FI) ! ! 3/25 ! ---- ! doc/bashref.texi ! - changed the email addresses to use the @email texinfo tag ! ! trap.c ! - call reset_parser from the exit trap code before calling ! parse_and_execute, so reserved words are parsed correctly ! ! subst.c ! - make sure parameter_brace_patsub expands the pattern string as if ! the expression were not in double quotes, even if the entire ! expansion is enclosed in double quotes, so that quote removal ! on embedded double quotes is performed correctly (bug report from ! schwab@issan.informatik.uni-dortmund.de) ! ! 3/27 ! ---- ! support/config.guess ! - changes to allow Power PCs running Apple's Rhapsody to configure ! ! 3/31 ! ---- ! ! Makefile.in ! - changed release status to `beta2' ! ! [bash-2.02-beta2 frozen] ! ! 4/6 ! --- ! subst.c ! - make sure command_substitute does not try to set the terminal's ! process group to a background job ! ! [bash-2.02 frozen] ! ! 4/18 ! ---- ! [bash-2.02 released] ! ! 4/20 ! ---- ! bashline.c ! - make sure that rl_defun is not called for ! history-and-alias-expand-line unless both ALIAS and BANG_HISTORY ! are defined ! [in bash-2.02.1] ! ! 4/22 ! ---- ! make_cmd.c ! - make sure that make_here_document allocates enough space for the ! first line of the here document, by using the line length +2 ! (instead of 1000, which is what the old code did, and breaks if ! the first line of the here document is enough longer than 1000 ! characters to cause other memory to be scribbled on) ! [in bash-2.02.1] ! ! builtins/cd.def ! - when in posix mode, a value of "" for CDPATH should be treated the ! same as the current directory, not result in an error ! [in bash-2.02.1] ! ! lib/malloc/malloc.c ! - change the mh_align member of `union mhead' to be of type double ! rather than a pointer, so that malloc will return (hopefully) ! 8-byte aligned memory ! [in bash-2.02.1] ! ! 4/23 ! ---- ! aclocal.m4 ! - add a new macro to check whether or not off_t is 64 bits ! ! 4/24 ! ---- ! configure.in ! - fixed a typo so the bash malloc is not compiled in on mips-sgi-irix6 ! ! lib/readline/display.c ! - fix for readline redisplay if the prompt string is longer than the ! screen width and includes invisible characters ! [in bash-2.02.1] ! ! jobs.c ! - make_child should not set the terminal's process group to ! pipeline_pgrp if pipeline_pgrp == shell_pgrp (indicating that we ! are forking a child for a command substitution) ! [in bash-2.02.1] ! ! subst.c ! - in execute_simple_command, in the child forked if there is a pipe ! or the command is asynchronous, set subshell_environment to ! SUBSHELL_ASYNC only if the command is asynchronous, SUBSHELL_FORK ! if there is a pipe in or out ! [in bash-2.02.1] ! ! 4/27 ! ---- ! support/texi2dvi ! - upgraded to version 0.8 (from 0.5) ! ! support/texi2html ! - upgraded to version 1.52 (from 1.51) ! ! support/config.sub ! - config.sub now recognizes all the permutations of the system name ! that config.guess produces for alphas ! [in bash-2.02.1] ! ! aclocal.m4 ! - changed BASH_TYPE_INT32_T, BASH_TYPE_U_INT32_T, and ! BASH_TYPE_PTRDIFF_T to avoid compiling a program; instead use ! the values determined by the AC_CHECK_SIZEOF tests to determine ! the default values to supply to AC_CHECK_TYPE ! ! configure.in ! - don't call AC_CHECK_TYPE({int32_t,u_int32_t,ptrdiff_t}) from ! configure.in; use the updated BASH_TYPE macros instead ! ! builtins/exec.def ! - if shell_execve fails, set ARGS to null because the realloc() call ! by shell_execve may have caused it to be reallocated and freed -- ! we don't want to free the memory twice ! ! lib/glob/fnmatch.c ! - fixes from ache@nagual.pp.ru to make fnmatch work for eight-bit ! characters when `isupper' and `islower' are used -- they were ! restricted to ASCII characters before, probably to work around ! some ancient, broken C libraries in which is{low,upp}er are valid ! only for ASCII characters and return bogus values otherwise ! [in bash-2.02.1] ! ! 4/29 ! ---- ! builtins/cd.def ! - fixed a problem with the shell displaying the old working directory ! instead of the new one after changing to a directory found via ! $CDPATH when in physical mode (set -o physical) ! [in bash-2.02.1] ! ! make_cmd.c ! - make make_cond_command initialize the line number from the cond_node ! that's passed as an argument (not that it's used right now) ! ! copy_cmd.c ! - make sure that copy_cond_command copies the type of the cond command, ! since execute_cond_command uses that to decide what kind of test ! to perform ! [in bash-2.02.1] ! ! builtins/printf.def ! - make sure the for loop that processes the format string actually ! consumes arguments; otherwise process it only once to avoid ! infinite loops (e.g., `printf " " abc def ghi') ! [in bash-2.02.1] ! - if the format string is empty after preprocessing by ansicstr, ! return immediately ! [in bash-2.02.1] ! ! tests/run-printf ! - use `diff -a' so the presence of a non-printing character in the ! output doesn't confuse diff into thinking the files are binary ! (test whether or not `diff' supports `-a' first) ! ! Makefile.in ! - keep $(LOCAL_LIBS) from being specified twice ! ! 4/30 ! ---- ! support/shobj-conf ! - a script to generate variables to do shared object configuration ! for the loadable builtin stuff ! ! configure.in ! - added a section for shared object configuration using an `eval' ! of the output of shobj-conf and substituting the generated values ! with AC_SUBST ! ! examples/loadables/Makefile.in ! - the system-specific shared object configuration variables are now ! substituted by configure ! ! 5/4 ! --- ! builtins/ulimit.def ! - some changes for HPUX 9.x's peculiar handling of RLIMIT_FILESIZE ! - changed the limit retrieval functions to return an error code ! and the value in a reference argument to avoid use of RLIM_INVALID ! ! general.c ! - new function, get_group_array(), which returns an array of ! gids ! ! examples/loadables/{id,printenv,sync,uname,whoami,push}.c ! - new loadable builtins ! ! variables.c ! - moved code that initializes $PPID into a new function, set_ppid() ! ! variables.h ! - extern declaration for set_ppid() ! ! 5/6 ! --- ! subst.c ! - make sure that the `"' (double-quoted string) case of ! expand_word_internal calls string_list_dollar_at if we've expanded ! a double-quoted $@ so correct splitting on $IFS is done when ! the expansion is complete. We can't simply call string_list ! because that forces a space separator, and $IFS may not contain ! a space ! [in bash-2.02.1] ! ! 5/7 ! --- ! builtins/umask.def ! - broke the code that parses a symbolic mode out of symbolic_umask ! into a separate function that takes a symbolic mode and an initial ! set of bits to modify ! ! examples/loadables/mkdir.c ! - new loadable builtin ! ! 5/11 ! ---- ! builtins/printf.def ! - use the format string length provided by ansicstr() to process the ! format string, rather than testing for nullness, to handle NUL ! bytes in the expanded format string ! ! builtins/pushd.def ! - changes so it can be built as both a regular builtin and a loadable ! builtin from the same source ! ! examples/loadables/Makefile.in ! - changes to build pushd.c from ${topdir}/builtins/pushd.def and then ! compile it with the correct flags to make it a loadable builtin, ! even if PUSHD_AND_POPD is not defined in config.h ! ! 5/12 ! ---- ! lib/readline/complete.c ! - use rl_completer_quote_characters instead of #ifdef SHELL/#endif ! code in make_quoted_replacement. This means complete.c no longer ! has any #ifdef SHELL code ! ! 5/13 ! ---- ! builtins/Makefile.in ! - `make clean' should remove mkbuiltins.o ! ! Makefile.in ! - all of the various `clean' targets need to descend into lib/sh ! and run the appropriate target there ! ! builtins/type.def ! - changed to use the builtin getopt. The old long options are ! handled by prescanning the argument list looking for the long ! options, processing them, and taking them out of the list before ! passing it to internal_getopt() ! ! lib/readline/signals.c ! - removed #ifdef SHELL code -- job control signals and SIGTERM are ! always set in rl_set_signals, but are set to SIG_IGN if the old ! handler was SIG_IGN (as bash sets it) ! - new function rl_maybe_set_sighandler, which sets the signal ! disposition back to SIG_IGN if the old handler was SIG_IGN ! - removed #ifdef HANDLE_JOB_SIGNALS and #ifdef HANDLE_SIGTERM code ! ! lib/readline/rltty.c ! - removed #ifdef SHELL code -- set_winsize is always called ! to force the application to stop if it's not in the foreground ! before getting the tty attributes ! ! 5/14 ! ---- ! lib/readline/signals.c ! - readline now catches SIGQUIT and cleans up the tty before resending ! it to its container application (unless the calling application has ! set the disposition of SIGQUIT to be SIG_IGN) ! - rl_handle_sigwinch is now called rl_sigwinch_handler ! - rl_sigwinch_handler now calls rl_resize_terminal to fetch the ! screen size after a SIGWINCH ! - the sighandler_cxt struct for non-posix systems now includes ! sa_flags and sa_mask variables, for future use ! - new variable, rl_catch_signals, indicating that readline should ! install its own signal handlers for SIGINT, SIGTERM, SIGQUIT, ! SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU ! - new variable, rl_catch_sigwinch, indicating that readline should ! install its own SIGWINCH handler, which will chain to a calling ! application's SIGWINCH handler ! - new function, rl_free_line_state(), to free up variable state ! associated with the current line after receiving a signal ! - new function, rl_cleanup_after_signal(), to clean up the display ! and terminal state after receiving a signal ! - new function, rl_reset_after_signal(), to reinitialize the ! terminal state after a signal handler returns and readline ! continues ! - rl_set_signals and rl_clear_signals now look at the values of ! rl_catch_signals and rl_catch_sigwinch ! ! lib/readline/terminal.c ! - new function rl_resize_terminal (), to reset readline's idea of ! the screen size after a SIGWINCH ! ! lib/readline/readline.h ! - extern declarations for rl_resize_terminal(), rl_free_line_state(), ! rl_cleanup_after_signal(), rl_reset_after_signal() ! - extern declarations for rl_catch_signals and rl_catch_sigwinch ! ! variables.c ! - new functions, get_env_value(char *) and get_home_dir(void) to ! satisfy references from the tilde and readline libraries when ! they are compiled as part of bash ! ! lib/tilde/tilde.c ! - rely on extern declarations of get_env_value and get_home_dir; ! there is no more #ifdef SHELL code ! ! lib/readline/shell.c ! - implementation of get_home_dir that uses getpwuid() to satisfy ! references from tilde.c when not compiled as part of bash ! - removed savestring() ! - removed #ifdef SHELL/#endif pair -- all of these functions will be ! resolved from bash when readline is linked into bash ! ! lib/readline/savestring.c ! - new file, with function definition for savestring() for backwards ! compatibility ! ! Makefile.in, _distribution ! - bumped things up to bash-2.03-alpha ! ! 5/15 ! ---- ! lib/readline/rlconf.h ! - removed #ifdef SHELL/#endif pair, so the callback stuff will be ! compiled into libreadline, but never linked into bash (since it's ! not referenced) ! ! configure.in ! - added new `--with-installed-readline' option to allow readline to ! be linked with an already-installed version -- this will probably ! not work with versions of readline prior to 2.3 (libreadline.so.4) ! [THIS IS STILL UNDOCUMENTED] ! ! Makefile.in ! - changed necessary variables to allow the `--with-installed-readline' ! option to work; shared and static libraries are supported ! ! 5/18 ! ---- ! lib/readline/display.c ! - _rl_save_prompt is now rl_save_prompt; _rl_restore_prompt is now ! rl_restore_prompt ! ! lib/readline/readline.h ! - extern declarations for rl_save_prompt and rl_restore_prompt ! ! lib/readline/{search,isearch,readline,display}.c ! - converted calls to _rl_{save,restore}_prompt () to use new public ! versions ! ! lib/readline/doc/rltech.texinfo ! - documented new public functions rl_{save,restore}_prompt ! ! 5/19 ! ---- ! lib/readline/readline.c ! - new hook function variable, rl_pre_input_hook. If non-zero, it's ! called from readline_internal_setup just before it returns and ! readline starts reading input ! ! lib/readline/readline.h ! - extern declaration for rl_pre_input_hook ! ! lib/readline/doc/rltech.texinfo ! - documented new variable rl_pre_input_hook ! ! 5/20 ! ---- ! lib/readline/complete.c ! - new hook function variable, rl_completion_display_matches_hook. ! If non-null, this function is called when readline would normally ! display the list of completion matches ! ! lib/readline/readline.h ! - extern declaration for rl_completion_display_matches_hook ! ! lib/readline/doc/rltech.texinfo ! - documented rl_completion_display_matches_hook ! ! lib/readline/readline.c ! - if RL_LIBRARY_VERSION is not defined, define it to 4.0 to match ! the version number of the shared libraries ! ! lib/readline/doc/{hist,rlman}.texinfo ! - changed the version and edition to 4.0 to match the library version ! ! support/config.guess ! - added case clause for matching UnixWare 7 from SCO (SVR5) -- further ! work may be needed ! [These fixes were in a usenet posting from hops@sco.com] ! ! support/config.sub ! - added case clauses to recognize various aliases for SCO Open Server ! and Open Desktop ! [in bash-2.02.1] ! - broke the code that canonicalizes unixware into unixware2 and ! unixware7 clauses (multiple places) ! [in bash-2.02.1] ! - added clause to recognize `sysv5' for SVR5 ! [These fixes were in a usenet posting from hops@sco.com] ! [in bash-2.02.1] ! ! configure.in ! - add `-b elf' to LOCAL_CFLAGS for sco3.2v5* to allow dynamic linking ! (and loadable builtins) ! - add AC_DEFINE(SVR5) on SVR5 (unixware 7) ! ! config.h.in ! - add #undef SVR5, set by configure ! ! 5/21 ! ---- ! shell.c ! - line-buffer stdout and stderr in shell_initialize only if ! shell_initialized is 0 on all systems, not just SunOS 5 ! [in bash-2.02.1] ! ! support/rlvers.sh ! - script to print out the version number of any installed ! readline library ! ! configure.in ! - only allow --with-installed-readline if the version of the ! installed readline library is 4.0 or greater ! ! 5/22 ! ---- ! lib/readline/complete.c ! - broke the code that actually displays a list of completion ! matches on the output stream into a separate public function, ! rl_display_match_list, so it can be called from the hook ! function rl_completion_display_matches_hook. ! ! lib/readline/readline.h ! - new extern declaration for rl_display_match_list ! ! lib/readline/rltech.texinfo ! - documented rl_display_match_list ! ! configure.in,Makefile.in ! - --enable-static-link now creates a STATIC_LD variable in Makefile ! rather than adding to LDFLAGS directly. LDFLAGS now includes ! $(STATIC_LD) ! ! 6/2 ! --- ! builtins/cd.def ! - OLDPWD is now auto-exported ! - broke the code out of bindpwd() that updated the value of PWD in ! the export environment in-place and made it general, so it can ! be used for OLDPWD, too (this should be made *more* general, and ! moved to variables.c) ! ! 6/3 ! --- ! variables.c ! - moved builtins/cd.def:export_pwd_var to here, renamed it to ! update_export_env_inplace ! - converted put_command_name_into_env to just call ! update_export_env_inplace ! - made dummy variable for OLDPWD, marked as invisible and exported, ! in initialize_shell_variables ! ! variables.h ! - extern declaration for update_export_env_inplace ! ! builtins/cd.def ! - changed calls to export_pwd_var to update_export_env_inplace ! ! lib/readline/bind.c ! - added missing return in rl_unbind_function_in_map ! - changed _rl_read_file to check whether or not `read' returns ! < 0 rather than < file_size ! - _rl_read_init_file needs to free `openname' after calling ! _rl_read_file, since it's not used again ! ! lib/readline/callback.c ! - bogus extern declaration for `readline_internal_startup', should ! be readline_internal_setup ! ! lib/readline/histfile.c ! - read_history_range now checks whether read(2) returns < 0 rather ! than checking the return value against the file size ! ! lib/readline/parens.c ! - whoops -- timer.tv_usec is *micro* seconds, not milliseconds ! ! lib/readline/readline.c ! - initialize `eof' to 1 in readline_internal_charloop ! ! 6/5 ! --- ! configure.in ! - if we're configuring with an installed version of readline, set and ! have configure substitute RL_INCLUDE to `-I$(includedir)', so the ! build process uses the installed readline include files as well as ! the libraries ! ! Makefile.in, builtins/Makefile.in ! - add @RL_INCLUDE@ in the appropriate places, substituted by configure ! ! lib/readline/{history,readline}.h ! - add `extern "C"' wrapper if `__cplusplus' is defined ! ! lib/glob/fnmatch.h ! - include stdc.h ! - add prototypes to extern declaration for fnmatch() ! ! lib/readline/rlstdc.h ! - link to ../posixheaders/stdc.h (in readline lib with different name ! for benefit of standalone readline library installation) ! ! lib/readline/{history,keymaps}.h ! - include rlstdc.h ! - add prototypes to all of the extern function declarations ! ! lib/readline/history.h ! - the `data' member of a HIST_ENTRY is now a histdata_t, which is ! either a void * (ansi c) or a char * (k&r c) ! ! lib/readline/readline.c ! - changed calls to replace_history_entry to pass a histdata_t as the ! third parameter ! ! 6/8 ! --- ! copy_cmd.c ! - make sure that copy_cond_command doesn't blindly try to copy ! com->op, since that will be null for AND and OR nodes, at least ! [in bash-2.02.1] ! ! lib/readline/vi_mode.c ! - added missing second argument to rl_vi_[fbe][Ww]ord(), since ! they're used as pseudo-bindable commands (they appear in the ! default funmap) as well as utility functions ! ! lib/readline/readline.h ! - include rlstdc.h ! - added prototypes for functions from vi_mode.c, util.c, terminal.c, ! search.c, util.c, undo.c, readline.c, parens.c, macro.c, kill.c, ! keymaps.c, isearch.c, input.c, funmap.c, display.c, complete.c, ! callback.c, ! - added extern declarations for functions from rltty.c ! ! lib/readline/{readline,util}.c ! - rl_refresh_line now takes the standard two arguments for bindable ! commands; changed callers ! ! lib/readline/*.c ! - small cleanups for incorrect arguments, etc. uncovered by use of ! function prototypes ! ! bashline.c ! - small cleanups for incorrect arguments, etc. uncovered by use of ! function prototypes ! ! 6/11 ! ---- ! jobs.c ! - cast result of strsignal() to (char *) for the benefit of broken ! Cray UNICOS machines ! [in bash-2.02.1] ! ! configure.in,aclocal.m4 ! - new test, BASH_TYPE_BITS64_T, used to find out what basic type is ! 64 bits long; defaults to `double' ! - call AC_CHECK_SIZEOF(double) ! ! config.h.in ! - #define for bits64_t, undef by default ! ! 6/24 ! ---- ! aclocal.m4 ! - changed BASH_TYPE_BITS64_T so that it checks the size of a char * ! first, before trying sizeof(double) ! ! lib/readline/doc/rluser.texinfo,doc/{bash.1,readline.3} ! - changed default binding for tilde-expand to M-&, since bash ! overrides M-~ to force username completion ! ! bashline.c ! - fixed an off-by-one error in hostnames_matching that exhibited ! itself when an exact multiple of 16 hostnames matched (fix ! from ) ! [in bash-2.02.1] ! ! 6/30 ! ---- ! lib/readline/readline.c ! - the maximum numeric argument is now 1000000 ! ! bashline.c ! - fixed a bug in bash_directory_completion_hook that caused memory ! to be freed twice if a directory name containing an unset ! variable was completed and `set -u' had been set ! ! configure.in ! - on LynxOS, add a -DRECYCLES_PIDS to LOCAL_CFLAGS ! ! execute_cmd.c ! - make sure that the changes to make the shell fork early when ! run in the background do not cause commands such as `%1 &' ! to fork ! [in bash-2.02.1] ! - if RECYCLES_PIDS is defined, execute_command_internal sets ! last_made_pid to NO_PID after waiting for a foreground process, ! if the return status is 0 (fix from plai@Lynx.COM (Paul Lai)) ! ! lib/readline/kill.c ! - fixes from Andreas Schwab to rl_yank_last_arg that make it ! behave better ! ! lib/readline/input.c ! - fixes from Donald Beaudry to make the input buffering ! and rl_stuff_char work right when the input buffer is nearly full ! (probably not a problem with keyboard input, but maybe a problem ! with programmers attempting to use rl_stuff_char to preload the ! input buffer) ! ! 7/14 ! ---- ! parse.y ! - fix to decode_prompt_string so that the \$ expansion quotes the `$' ! so it won't be processed by subsequent parameter expansion ! - change read_token_word so a $$ appearing in a token is recognized ! and parsed immediately, so a single or double quote after the ! second `$' doesn't cause ANSI-C expansion or locale translation ! (bug report from haertel@ichips.intel.com) ! ! 7/16 ! ---- ! lib/readline/display.c ! - fixed a bug that caused core dumps in xrealloc if the prompt was ! longer than 1024 characters ! ! 7/21 ! ---- ! builtins/mkbuiltins.c ! - if the number of characters read from the .def file is less than ! the file size reported by `stat', and the read completed without ! errors, reset the file size to avoid writing garbage at the end ! of the generated .c file (needed on WIN32 systems, doesn't hurt ! on Unix) ! ! 7/22 ! ---- ! CWRU/empty-for-wordlist ! - patch from Brian Fox for parse.y to allow bash to accept an empty ! `wordlist' after the `in' keyword in a for statement ! ! 7/23 ! ---- ! doc/bash.1 ! - corrected the synopsis of the `for' and `select' statements to ! indicate that the semicolon (or newline) after the optional ! `in words' is required ! ! [bash-2.02.1 released] ! ! 7/28 ! ---- ! lib/readline/display.c ! - make sure visible_length is initialized to 0 in rl_expand_prompt. ! Fix from Gerhard Niklasch . ! ! lib/glob/glob.c ! - make sure that quotes are removed from the filename being globbed ! in glob_vector() before calling the GLOB_TESTNAME macro if there ! are no globbing characters in the pattern ! ! doc/Makefile.in ! - make sure that builtins.1 is looked for in $(srcdir) when running ! `make install' (it's still commented out, though) ! ! 7/30 ! ---- ! config.h.bot ! - if PROMPT_STRING_DECODE is not defined, define PPROMPT (the primary ! prompt string) as "$ " ! ! variables.c ! - if PROMPT_STRING_DECODE is not defined, and current_user.euid == 0, ! PS1 defaults to "# ", otherwise it defaults to `primary_prompt' ! ! doc/bashbug.1 ! - fixed email address prep.ai.mit.edu -> gnu.org ! ! 8/3 ! --- ! support/shobj-conf ! - add `solaris2' as a possible OS name, treated the same as sunos5 ! ! 8/4 ! --- ! shell.c ! - changed maybe_make_restricted() so that $ENV and $BASH_ENV are ! read-only variables in a restricted shell ! ! doc/{bash.1,bashref.texi} ! - added ENV and BASH_ENV to the list of readonly variables in ! restricted mode ! ! parse.y ! - added `do', `then', `else', `{', and `(' to the list of keywords ! that may precede the `time' reserved word ! ! general.c ! - added sanity checks to timeval_to_secs and clock_t_to_secs so ! that if the fractional part is >= 1000, 1 is added to the ! seconds and 1000 is subtracted from the fractional seconds ! ! 8/6 ! --- ! Makefile.in ! - use $(CC_FOR_BUILD) to build mksignames ! ! configure.in ! - changes to allow cross-building for BeOS as well as cygwin32 ! ! cross-build/{beos-sig.h,x86-beos.cache} ! - new files for cross-compiling for BeOS ! ! 8/7 ! --- ! Makefile.in ! - changed rule for version.h to use && instead of if-then-else-fi to ! make sure the recipe fails if mkversion.sh fails ! ! configure.in ! - beos does not use the GNU malloc ! ! lib/sh/itos.c ! - broke itos into inttostr(i, buf, len) and itos(i), which calls ! inttostr and returns a newly-allocated string with the result ! ! support/mksignames.c ! - define `SIGKILLTHR' if system include files define it ! ! externs.h ! - extern declaration for inttostr(int, char *, int) ! ! 8/13 ! ---- ! lib/sh/strtol.c ! - include stdc.h before bashansi.h ! ! execute_cmd.c ! - make sure that execute_cond_node treats `=' the same as `==' ! ! 8/25 ! ---- ! variables.c, print_cmd.c ! - changed some calls to itos to use inttostr instead ! ! cross-build/x86-beos.cache, {execute_cmd,general,shell,trap}.c ! - some changes for BeOS (from fnf@ninemoons.com) ! ! lib/posixheaders/memalloc.h ! - changes to handle case where we're using both gcc and the C ! version of alloca(), or if we have alloca.h and we're using ! the C version of alloca() (from fnf@ninemoons.com) ! ! lib/sh/oslib.c ! - if bcopy or bzero are #defines, #undef them before defining ! replacement functions ! ! support/config.guess ! - recognize AmigaOS (from fnf@ninemoons.com) ! - recognize BeOS running on various machines ! (from fnf@ninemoons.com) ! ! support/config.sub ! - change basic_machine definition for amiga; added amigaos ! (from fnf@ninemoons.com) ! - changed definitions for MIPS machines running Linux (from ! fnf@ninemoons.com) ! - recognize `beos' as a valid operating system ! (from fnf@ninemoons.com) ! - changed OS for *-cbm to `amigaos' rather than `amigados' ! (from fnf@ninemoons.com) ! ! examples/functions/autoload.v3 ! - a new version, from Mark Kennedy ! ! lib/readline/readline.c ! - new function, rl_delete_or_show_completions, like tcsh editing ! function delete-char-or-list ! ! lib/readline/readline.h ! - new extern declaration for rl_delete_or_show_completions ! ! lib/readline/funmap.c ! - new bindable name `delete-char-or-list', like tcsh ! ! lib/readline/doc/rluser.texinfo, doc/{bash.1,readline.3} ! - documented new delete-char-or-list command ! ! general.c ! - fix full_pathname to keep it from generating things like ! //foo when the current directory is / ! ! 8/27 ! ---- ! builtins/fc.def ! - fixed the help text for the -e option ! ! 8/28 ! ---- ! support/shobj-conf ! - added a clause for AIX 4.2 systems running gcc -- just the ! standard gcc stuff for shared objects, but it has to come ! before the other AIX 4.2 clause ! ! 8/31 ! ---- ! shell.c ! - some changes so that `set -e' is turned off while executing ! the startup files ! ! 9/3 ! --- ! flags.c ! - new variable, `restricted_shell', non-zero if the shell was ! started in restricted mode ! ! flags.h ! - extern declaration for restricted_shell ! ! shell.c ! - new function, shell_is_restricted, returns 1 if the shell is ! supposed to be restricted based on the basename of $0 or the ! -r option ! - set restricted_shell to the value returned by shell_is_restricted ! before executing the startup files ! ! externs.h ! - extern declaration for shell_is_restricted ! ! builtins/shopt.def ! - new shopt variable, restricted_shell, indicates whether the shell ! was restricted at startup -- useful in startup files ! ! doc/{bash.1,bashref.texi} ! - documented new restricted_shell shopt option ! ! 9/15 ! ---- ! lib/sh/rename.c ! - new file, replacement for rename(2) if the OS doesn't provide it ! ! configure.in,config.h.in,Makefile.in,lib/sh/Makefile.in ! - machinery for including rename.o in libsh.a ! ! nojobs.c ! - make sure that set_tty_state returns a value ! ! builtins/mkbuiltins.c ! - use a call to rename(2) instead of a link/unlink pair ! ! lib/glob/glob.c ! - don't #define bcopy if bcopy is already defined ! ! lib/readline/histfile.c ! - add a call to ftruncate for BeOS, which ignores the O_TRUNC flag ! to open ! ! lib/readline/input.c ! - make rl_getc loop if read returns -1/EINTR on BeOS ! ! configure.in ! - set ARFLAGS and substitute it into the Makefiles ! ! {,builtins,lib/{glob,malloc,readline,sh,termcap,tilde}}/Makefile.in ! - ARFLAGS is now substituted by configure ! - use ARFLAGS in rules that create libraries using $(AR) ! ! builtins/printf.def ! - fixed bug that caused a core dump when a modifier was supplied ! in the format string without a conversion character (e.g. `%h') ! ! 9/17 ! ---- ! lib/glob/glob.c ! - if filenames starting with a dot don't have to be matched ! explicitly (e.g., after a `shopt -s dotglob'), don't match ! `.' or `..' in any case ! ! eval.c ! - make sure that array assignments don't show up in the history list ! (fix from Andreas Schwab ) ! ! lib/readline/complete.c ! - fix to rl_menu_complete so it inserts a single completion properly ! when a word matches only one filename ! ! 9/24 ! ---- ! execute_cmd.c ! - difftimeval should zero out the tv_usec field if the tv_sec field ! is < 0 ! - addtimeval should check for tv_usec being == 1000000 and add one ! to tv_sec if it is ! ! 9/25 ! ---- ! subst.c ! - fix to expand_word_internal to prevent non-whitespace IFS characters ! from causing word splitting if they are not the results of an ! expansion (not exactly right yet, but I think it's the result of a ! problem with the ${...} end-brace-matching code in the parser) ! ! 9/28 ! ---- ! parse.y ! - new flag for parse_matched_pair -- P_FIRSTCLOSE -- which makes it not ! count and match additional construct open characters ! - change calls to parse_matched_pair when matching braces in ! ${...} constructs (both unquoted and within double quotes) to ! specify the P_FIRSTCLOSE flag to match POSIX.2 requirements ! ! subst.c ! - changed fix from 9/25, now that the parser problem is fixed ! ! 9/30 ! ---- ! variables.c ! - change expansion of list of words between (...) in array assignments ! to include pathname generation in assign_array_var_from_string ! ! doc/{bash.1,bashref.texi} ! - clarified behavior of the shell at startup if running setuid, with ! and without the -p option supplied ! ! 10/7 ! ---- ! bashhist.c ! - change default open(2) mode to 0600 instead of 0666 for `privacy ! concerns' ! ! 10/13 ! ----- ! lib/readline/display.c ! - fixed a problem with displaying tabs after newlines, from ! ! - in update_line, if we are printing over existing material, ! only call space_to_eol or _rl_clear_to_eol if lendiff is non-zero ! - when moving the cursor in _rl_move_cursor_relative, only call ! _rl_backspace if the current cursor position is strictly greater ! than the desired cursor position ! ! 10/14 ! ----- ! locale.c ! - LC_ALL is no longer set automatically when LANG is assigned a value ! ! config.h.{top,bot} ! - renamed to config-{top,bot}.h, respectively ! ! config.h.in ! - include config-top.h and config-bot.h ! ! Makefile.in ! - things now depend on config-top.h and config-bot.h ! ! subst.c ! - minor changes to extract_dollar_brace_string and char_is_quoted to ! allow things like "${PIP[TAB] to perform correct variable completion ! ! 10/15 ! ----- ! builtins/Makefile.in ! - add $(PROFILE_FLAGS) to the make recipe that creates `mkbuiltins', ! so configuring with --enable-profiling works right ! ! 10/20 ! ----- ! doc/bashref.texi ! - documented the new --with-installed-readline option ! ! [bash-2.03-alpha1 frozen] ! ! 10/21 ! ----- ! builtins/reserved.def ! - fixed help text for { ... } to make it clear that a semicolon is ! required before the closing brace ! ! 10/22 ! ----- ! trap.c ! - in decode_signal, don't bother calling strcasecmp if ! signal_names[sig] is null or empty ! ! 11/2 ! ---- ! configure.in ! - make sure RL_LIBDIR and HIST_LIBDIR are assigned values even if ! readline or history is configured out of the shell, so the -L ! options have arguments in the link command ! ! test.c ! - make test_syntax_error cause test to return a status > 1, to ! conform to POSIX.2 4.62.8 ! ! doc/readline.3 ! - make sure the SYNOPSIS section indicates that programmers should ! include before ! ! 11/9 ! ---- ! Makefile.in ! - install with explicit mode of 0755 ! ! 11/10 ! ----- ! builtins/test.def ! - make sure that a missing `]' makes `[' exit with status 2, to ! conform to POSIX.2 4.62.8 ! ! command.h ! - new word flag: W_NOGLOB, meaning to not perform globbing ! ! execute_cmd.c ! - fix_assignment_statements now turns on the W_NOGLOB flag for ! arguments to `assignment builtins' that have W_ASSIGNMENT set ! ! subst.c ! - expand_word_internal needs to preserve the W_NOGLOB flag from ! the word being expanded to the word being returned ! - glob_expand_word_list does not call shell_glob_filename for a ! word with W_NOGLOB set ! ! builtins/shopt.def ! - print_shopt is now void ! ! configure.in ! - machines running Rhapsody don't use the bash malloc ! - pass host_vendor to the Makefiles with AC_SUBST ! ! support/config.guess ! - Rhapsody is really rhapsody, not nextstep ! ! support/config.sub ! - add rhapsody to the list of supported configurations ! ! Makefile.in ! - pass CONF_HOSTTYPE, CONF_OSTYPE, and CONF_MACHTYPE as -D options ! in SYSTEM_FLAGS, to indicate that they came from the configuration ! process ! - set VENDOR variable from host_vendor configuration variable ! - pass CONF_VENDOR as part of SYSTEM_FLAGS ! ! variables.c ! - define HOSTTYPE, OSTYPE, and MACHTYPE as CONF_HOSTTYPE, CONF_OSTYPE, ! and CONF_MACHTYPE, respectively ! ! 11/11 ! ----- ! doc/{bashref.texi,bash.1} ! - updated description of `read' to clarify the -r option and its ! effect on backslash escaping ! ! 11/13 ! ----- ! examples/loadables/{ln,unlink}.c ! - new loadable builtins ! ! 11/23 ! ----- ! lib/glob/fnmatch.c ! - some fixes to handle extended glob patterns immediately following ! a `*' ! ! tests/extglob.tests ! - updated with cases from bug report fixed today ! ! support/shobj-conf ! - udpated stanza for aix 4.2 with gcc, based on information from ! jik@cisco.com ! ! configure.in ! - changes to add the correct linker options to allow dynamic linking ! when using gcc on AIX 4.2, instead of insisting on the AIX C ! compiler ! ! examples/misc/aliasconv.{bash,sh} ! - changes to handle aliases with embedded single quotes ! ! 11/25 ! ----- ! lib/readline/complete.c ! - postprocess_matches should call compute_lcd_of_matches with an ! argument of `t' instead of `text' ! - postprocess_matches should never call ding(); leave that for the ! callers ! - postprocess_matches no longer needs `text' as the first argument ! - rl_complete_internal needs to call ding() if postprocess_matches ! returns 0, since postprocess_matches no longer does it ! - rl_complete_internal can now free `text' immediately after calling ! gen_completion_matches, since it's no longer used ! ! 11/30 ! ----- ! print_cmd.c ! - make sure redirections following compound commands have a space ! separating them from the command ! ! 12/1 ! ---- ! general.c ! - changed canonicalize_pathname so that if the result path begins ! with `//', it will be changed to `/' if and only if the original ! path did not begin with `//' (there has to be a non-slash after ! the leading `///' in the original path) ! ! 12/2 ! ---- ! builtins/evalstring.c ! - augment the test for turning on CMD_NO_FORK to make sure that ! parse_and_execute_level == 1. That takes care of things like ! ! bash -c 'for f in 1 2 3; do eval "/bin/echo \"$f\"" ; done' ! ! only printing one line of output ! ! 12/8 ! ---- ! config-top.h ! - add commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS so ! that users may, if they choose, make things like ! ! #! /bin/bash --login ! ! work in shell scripts ! ! 12/10 ! ----- ! jobs.c ! - changes to the way jobs are reaped when the shell is not ! interactive: ! ! o notify_of_job_status no longer marks dead jobs as ! notified if they did not exit due to a signal; ! o changed mark_background_jobs_as_notified to take an ! argument `force': if zero, we only mark enough ! dead jobs as notified to keep CHILD_MAX jobs in the ! jobs list, as POSIX.2 specifies. If non-zero, mark ! all dead jobs as notified; ! o wait_for_background_pids marks all dead jobs as ! notified when it has finished waiting for everything, ! since the only thing that calls it is the `wait' builtin; ! o wait_for_single_pid marks a job as notified after it ! has completed, since the only things that call it are ! wait_for_background_pids and the `wait' builtin ! o wait_for_job marks the job as notified after the last ! pid completes ! ! execute_cmd.c ! - change execute_subshell_builtin_or_function to check ! subshell_environment and pipe_out to decide whether or not to fork ! if builtin == jobs_builtin, since the early-forking code added in ! bash-2.02 means that the piping has probably already been done ! ! 12/15 ! ----- ! parse.y ! - changes to make avar=((...)) a syntax error instead of ignoring ! the nested parens and treating it as an array assignment ! ! shell.c ! - changed run_startup_files so that any shell, whether or not it is ! interactive, will run the login shell startup files when given the ! --login option. This happens only when not in posix mode. ! ! builtins/enable.def ! - changes to handle Tenon's MachTen, whose dlclose() does not return ! a value ! ! lib/glob/fnmatch.c ! - changed gmatch so that when it calls extmatch, it removes FNM_PERIOD ! from the flags if it's not matching at the start of the string. ! This fixes the problem of `@' and `+' extended-glob subpatterns ! containing bracket expressions treating `.' specially when matching ! a portion of the string starting with `.' ! ! config-top.h ! - removed define for NON_INTERACTIVE_LOGIN_SHELLS, since it's no longer ! necessary ! ! 12/17 ! ----- ! lib/readline/complete.c ! - change rl_complete_internal and rl_menu_complete to check ! rl_filename_completion_desired to decide whether or not we're ! completing filenames instead of checking whether the attempted ! completion function is filename_completion_function. ! filename_completion_function sets rl_filename_completion_desired, ! so this shouldn't break anything -- just allow postprocessing of ! matches for user-supplied filename completion functions that don't ! call filename_completion_function ! ! lib/readline/display.c ! - new function, _rl_erase_entire_line, which erases the entire line, ! no matter where the cursor is, and puts the cursor at the beginning ! of the (newly-empty) line ! ! lib/readline/readline.c ! - new application-level variable, rl_erase_empty_line, which, if ! non-zero, tells readline to erase the contents of the current line, ! prompt and all, if the only character typed to an otherwise-blank ! line is bound to rl_newline. Requested by the Cygnus GDB folks. ! - change to rl_newline to suppress the call to _rl_update_final if ! rl_erase_empty_line is non-zero, and rl_point == rl_end == 0, since ! _rl_update_final calls crlf() ! - change to readline_internal_charloop to call _rl_erase_entire_line ! if newline was the only thing typed on an otherwise-empty line ! ! lib/readline/readline.h ! - extern declaration for rl_erase_empty_line ! ! lib/readline/doc/rltech.texinfo ! - documented new rl_erase_empty_line variable ! ! 12/18 ! ----- ! Makefile.in ! - changed RELSTATUS to `beta1' ! ! [bash-2.03-beta1 frozen] ! ! 12/21 ! ----- ! doc/{bash.1,bashref.texi} ! - added description of `test -h'; equivalent to `test -L' ! ! 12/22 ! ----- ! support/shobj-conf ! - SHOBJ_LDFLAGS should be those options to ld which are common ! between building dynamically loadable shared objects and shared ! libraries ! - added two new variables: SHOBJ_XLDFLAGS, which are ld options ! specific to building dynamically loaded shared objects, and ! SHLIB_LIBS, which are other libraries against which shared libraries ! should be linked. These are for the benefit of AIX 4.2; other ! stanzas do not need to be changed. ! ! configure.in ! - add call to AC_SUBST for SHOBJ_XLDFLAGS ! ! examples/loadables/Makefile.in ! - SHOBJ_XLDFLAGS is now substituted by configure ! - $(SHOBJ_LDFLAGS) -> $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) in all ! recipes that build loadable builtins ! ! 12/29 ! ----- ! support/config.{guess,sub} ! - changes for NEC SX4 machines running SUPER-UX (?). Info from ! Nicholas Clark ! ! lib/readline/bind.c ! - new bindable variable, `isearch-terminators', which is the list of ! characters that will terminate an incremental search without ! subsequently executing the character as a command ! ! lib/readline/isearch.c ! - changes to incorporate the new isearch-terminators bindable variable; ! uses new private readline variable _rl_isearch_terminators ! (suggested by Brian Fox) ! ! doc/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo ! - documented new `isearch-terminators' settable variable ! ! lib/readline/complete.c ! - new convenience function, free_match_list, called from ! rl_complete_internal ! ! 12/30 ! ----- ! aclocal.m4 ! - changed the calls to AC_MSG_ERROR in the cross-compiling sections ! to AC_MSG_WARN, since AC_MSG_ERROR can cause configure to abort ! ! examples/functions/which ! - new function, emulation of `which' as it appears in FreeBSD ! ! 12/31 ! ----- ! lib/readline/readline.c ! - new bindable function: rl_rubout_or_delete. Does rl_rubout if ! rl_point is at the end of the line, or rl_delete if not. This ! is intended to mimic the Motif/Netscape/GNOME behavior of the ! DEL character, and can be bound to delete to get that behavior ! ! lib/readline/readline.h ! - new extern declaration for rl_rubout_or_delete ! ! lib/readline/funmap.c ! - bound the name `forward-backward-delete-char' to ! rl_rubout_or_delete (currently not bound to any keys) ! ! lib/readline/doc/manvers.texinfo ! - new file with readline manual version information, to mantain ! consistent numbering between readline and history manuals ! ! lib/readline/doc/{rlman,hist}.texinfo ! - @include manvers.texinfo for version information ! - moved the @dircategory and and @direntry directives inside ! the @ifinfo block ! - changed copyrights to 1988-1999 ! ! doc/Makefile.in, lib/readline/doc/Makefile.in ! - texi2html is now called with -menu (to handle the texinfo menus) ! and -monolithic (to include the table of contents in the generated ! HTML file instead of putting it in a separate file ! - changed recipes to remove references to TOC html files ! ! lib/glob/fnmatch.c ! - include or as appropriate for strchr() ! declaration ! ! 1/4/1999 ! -------- ! print_cmd.c ! - don't print bare words when printing conditional expressions in ! print_cond_node, use cprintf("%s", cond->op->word) ! ! subst.c ! - in separate_out_assignments, if VARLIST is non-null on function ! entry, free it up to clean up after a previous error longjmp ! ! 1/5 ! --- ! configure.in ! - make sure the case clause that disables the bash malloc on alpha ! machines catches things like `alphaev56' as well as `alpha' ! ! 1/12 ! ---- ! lib/readline/histlib.h ! - new error message code: NO_PREV_SUBST ! ! lib/readline/histexpand.c ! - handle NO_PREV_SUBST with appropriate error message in hist_error ! - in history_expand_internal, if the `s' or `&' case results in a ! null or empty LHS, return NO_PREV_SUBST ! ! error.c ! - new interface: command_error(func, code, e, flags); intended to ! collect command-related errors in one place ! - new interface: command_errstr(code); returns a string describing ! command error CODE ! ! error.h ! - extern declarations for command_error and command_errstr ! ! command.h ! - possible values for CODE in calls to command_error and command_errstr ! ! {shell,print_cmd,make_cmd,execute_cmd,dispose_cmd,eval}.c ,builtins/evalstring.c ! - changed some calls to programming_error to use command_error ! ! 1/13 ! ---- ! configure.in ! - if --enable-profiling is specified on a solaris2 machine, don't ! turn on enable-static-link, since it's very hard to build a ! static binary on solaris2 and gprof does not (apparently) require it ! ! builtins/getopts.def ! - add calls to sh_getopt_restore_state so the state is restored each ! time getopts is called. This protects us against the behavior of ! some mallocs, which causes `nextchar' to be set to garbage in ! getopt.c when a function is called between calls to getopts ! ! 1/14 ! ---- ! lib/readline/complete.c ! - if postprocess_matches returns 0 in rl_complete_internal, reset ! completion_changed_buffer to 0 before returning, since nothing ! has been changed ! ! 1/20 ! ---- ! subst.c ! - fixed pat_subst so that null patterns with a `#' specifier prefix ! the string to be substituted on with the replacement, and null ! patterns with a `%' specifier append the replacement to the string ! to be substituted on ! ! doc/{bash.1,bashref.texi} ! - corrected a small error in the description of parameter pattern ! substitution ! ! support/mksignames.c ! - SIGINFO means something else on sequent systems ! ! 1/26 ! ---- ! execute_cmd.c ! - fix to execute_simple_command to keep a child process from getting ! a bad value of last_asynchronous_pid when the shell forks early ! ! 2/1 ! --- ! Makefile.in ! - changed RELSTATUS to `beta2' ! ! 2/2 ! --- ! [bash-2.03-beta2 released] ! ! 2/3 ! --- ! tests/{cprint.{tests,right},run-cprint} ! - new test to exercise the command printing and copying code -- ! hopefully this will avoid things like the `conditional commands ! in functions make the shell abort' problem ! ! 2/4 ! --- ! version.c ! - if MACHTYPE is not defined, use CONF_MACHTYPE if it's defined ! ! 2/5 ! --- ! builtins/read.def ! - if READLINE is defined, we need an extra pair of braces around ! the `while' loop that reads from fd 0 if the -e option is ! supplied, otherwise the code erroneously tests the value of ! `retval', which is not set when using readline ! ! 2/15 ! ---- ! builtins/fc.def ! - make sure that fc closes `stream' before calling fc_execute_file ! ! 2/17 ! ---- ! builtins/fc.def ! - don't bother opening and closing the file of commands before ! calling fc_execute_file, since parse_and_execute will write the ! commands to the history file for us ! ! Makefile.in ! - changed release status to `release' ! ! 2/18 ! ---- ! parse.y ! - change to special_case_tokens so that `time' is not recognized ! as a reserved word while the parser is parsing a case statement ! pattern list (if `time' is the first pattern, the last read ! token will be newline, which time_command_acceptable says is OK ! to start a pipeline) ! ! pathexp.c ! - some changes to the POSIX_GLOB_LIBRARY code (often unused) ! ! shell.c ! - a couple of changes for Interix (nee OPENNT) ! - added code that handles systems without a third argument to main(); ! initializing `env' from `environ', conditionalized on a cpp define ! NO_MAIN_ENV_ARG ! ! configure.in, config.h.in ! - check for the presence of sbrk(2); define HAVE_SBRK if found ! ! xmalloc.c ! - don't do the space allocated computation when malloc or realloc ! fails if HAVE_SBRK is not defined ! ! configure.in ! - new configure variable, MAKE_SHELL, defaults to /bin/sh ! ! Makefile.in,{builtins,doc,support,lib/{glob,malloc,readline,sh,termcap,tilde},examples/loadables}/Makefile.in ! - set SHELL from @MAKE_SHELL@ ! ! lib/posixheaders/posixjmp.h ! - Don't override defines for setjmp and longjmp in on ! Internix (nee OPENNT) ! ! lib/readline/complete.c ! - Interix (OPENNT) doesn't do username completion ! ! configure.in ! - on Interix/OPENNT ($host_os == interix* or opennt*), add ! -DNO_MAIN_ENV_ARG to LOCAL_CFLAGS ! - on Interix/OPENNT, set MAKE_SHELL to $OPENNT_ROOT/bin/sh rather ! than a straight /bin/sh ! ! cross-build/opennt.cache ! - a `configure' cache file for Interix/OPENNT; not necessarily ! for cross-compiling, but this is where the other system cache ! files are ! ! [bash-2.03 released] ! ! 2/19 ! ---- ! configure.in ! - changed OPENNT_ROOT to INTERIX_ROOT for building on Interix ! ! support/config.guess ! - added two stanzas for Interix running on alpha and intel hardware ! ! 2/22 ! ---- ! config-bot.h ! - if PROMPT_STRING_DECODE is not defined, #undef PPROMPT before ! redefining it, to avoid warning messages ! ! execute_cmd.c ! - set jobs_hack in execute_subshell_builtin_or_function only if ! JOB_CONTROL is defined ! ! 2/24 ! ---- ! trap.c ! - fixed an obscure bug caused by a race condition in run_pending_traps. ! Read the comments in the source code for a full description of the ! problem and solution ! ! 3/1 ! --- ! aclocal.m4 ! - new test, BASH_STRUCT_TIMEVAL, which tries to compile a code ! fragment that includes and as appropriate ! and defines HAVE_TIMEVAL if the compile succeeds ! ! configure.in ! - call BASH_STRUCT_TIMEVAL rather than running a pair of ! AC_HEADER_EGREPs on sys/time.h and time.h ! ! lib/readline/histfile.c ! - include "posixstat.h" rather than ! - in history_truncate_file, only try to truncate if the history file ! is a regular file ! ! 3/2 ! --- ! aclocal.m4 ! - changed BASH_STRUCT_TIMEVAL back to using a pair of ! AC_EGREP_HEADERs instead of compiling a program fragment ! ! lib/readline/readline.c ! - readline_internal_charloop should cast the first argument to ! _rl_dispatch to `unsigned char' to avoid problems with negative ! array indices on systems where signed chars are the default ! ! lib/readline/kill.c ! - instead of doing a sequence of next_history() calls in ! rl_yank_nth_arg_internal, save and restore the history ! position explicitly after finding the correct entry. This ! attempts to ensure that rl_yank_nth_arg leaves the history ! pointer set to the same position as when it was called. ! Fix from Vasco Pedro ! ! 3/5 ! --- ! redir.c ! - broke code that opens file for redirection in do_redirection_internal ! into a separate function: redir_open(path, flags, mode, ri) ! ! general.h ! - changed STREQN so that it evaluates to 1 (strings are equivalent) ! if N == 0, to match the behavior of strncmp ! ! lib/sh/zwrite.c ! - new file, zwrite() from builtins/evalstring.c ! ! builtins/evalstring.c ! - removed private definition of zwrite ! ! builtins/common.c ! - double_quote needs to protect newlines with backslashes as well ! - new function, un_double_quote, to remove backslashes proctecting ! characters that are special in double quotes ! ! builtins/common.h ! - new extern declaration for un_double_quote ! ! parse.y ! - changed read_token_word to requote the expanded value of $'...' ! using single_quote ! - added a new flag to parse_matched_pair: P_ALLOWESC. It allows ! backslashes to quote embedded single quotes, and is used by ! the $'...' translation code for better ksh93-compatibility ! - changed localeexpand to call mk_msgstr on the string passed ! before displaying it if all we're doing is displaying translatable ! strings in `po' format. mk_msgstr quotes backslashes and double ! quotes in the string passed with backslashes, and encloses the ! result in double quotes. If only -D is supplied, the string is ! not changed at all -- this is what ksh93 does ! ! lib/readline/rlconf.h ! - removed PAREN_MATCHING #define, paren matching is always compiled ! into readline ! ! lib/readline/parens.c ! - removed code that was active if PAREN_MATCHING was not defined ! - added _rl_enable_paren_matching, which is called when the readline ! variable `blink-matching-paren' is assigned a value and changes ! the appropriate key bindings in emacs_standard_keymap ! ! lib/readline/bind.c ! - no more PAREN_MATCHING defines, `blink-matching-paren' is always ! available ! - if `blink-matching-paren' is assigned a value, call ! _rl_enable_paren_matching (rl_blink_matching_paren) ! ! lib/readline/emacs_keymap.c ! - removed PAREN_MATCHING defines; the default key bindings for ! ), ], and } are self-insert ! ! 3/7 ! --- ! stringlib.c ! - added an extra argument to ansicstr so that `echo -e' will not ! convert \' to ' ! ! externs.h ! - changed extern declaration for ansicstr ! ! parse.y, builtins/{echo,printf}.def ! - changed calls to ansicstr() appropriately ! ! eval.c ! - in parse_string_to_word_list, if an unexpected token is encountered ! that causes the string to not parse to a simple command, or to ! completely consume the string, display an error message and jump ! back to the top level after restoring the parsing environment, ! returning an error status from the attempted assignment ! ! 3/8 ! --- ! lib/glob/fnmatch.c ! - fixed patscan and extmatch to handle embedded [...](...) patterns ! better ! ! tests/{extglob2.{tests,right},run-extglob2} ! - an additional set of ksh extended globbing tests, cribbed from zsh ! ! 3/10 ! ---- ! general.c ! - changed unset_nodelay_mode slightly to make sure it handles both ! O_NDELAY and O_NONBLOCK if they have different values; it now ! returns a value of 0 on success (or no action); -1 on failure ! ! general.h ! - changed extern declaration for unset_nodelay_mode ! ! ! lib/readline/shell.c ! - new function: unset_nodelay_mode; identical to definition in ! general.c ! ! lib/readline/input.c ! - changed rl_getc to call unset_nodelay_mode if the read fails with ! errno == EWOULDBLOCK || errno == EAGAIN ! ! 3/11 ! ---- ! lib/termcap/termcap.c ! - minor changes from termutils-2.0 ! - minor change to MS-DOS version of valid_filename_p so MS-DOS-specific ! code from tgetent() can be removed (from Michel@smr.nl) ! ! lib/readline/bind.c ! - in _rl_read_file, null-terminate the buffer at the number of ! characters actually read, not what stat() says the file size is ! - use ~/_inputrc as a last-ditch inputrc filename on MS-DOS ! ! lib/readline/complete.c ! - change printable_part to handle MS-DOS `drive-letter:' pathname ! prefixes ! - removed __GO32__ code, since it's for DJGPP 1.x, which is not ! supported any more, and they don't work for DJGPP 2.x ! - added code to support MS-DOS drive letter prefixes and //X/... ! to filename_completion_function ! - _rl_completion_case_fold defaults to 1 on MS-DOS ! ! lib/readline/{display,input,readline,rltty,signals,terminal}.c ! - removed __GO32__ code ! ! lib/readline/histfile.c ! - make read_history_range and history_truncate_file work with the ! actual number of characters read from the file, not the file size ! as reported by stat() ! ! lib/readline/readline.c ! - change bind_arrow_keys_internal to bind MS-DOS arrow keys to the ! appropriate functions if __MSDOS__ is defined ! ! lib/readline/rltty.c ! - make sure set_winsize is always defined, with a null body if ! TIOCGWINSZ is not defined ! ! lib/readline/shell.c ! - include , since this file uses sprintf ! ! support/shobj-conf ! - MS-DOS does not support shared objects ! ! lib/tilde/tilde.c ! - change tilde_find_suffix and isolate_tilde_prefix to understand ! backslash as a pathname separator on MS-DOS ! ! 3/12 ! ---- ! lib/readline/{bind,readline,terminal}.c ! - no longer need to include ! ! lib/readline/terminal.c ! - don't need to include ! ! builtins/history.def ! - broke the code than handles deleting a particular history entry ! from the history list out into a separate function: delete_histent ! - added `-d offset' option to delete the history entry at position ! OFFSET, as displayed when the history is listed ! ! jobs.c, nojobs.c ! - new function, count_all_jobs(), returns the number of active jobs ! in the jobs list ! ! jobs.h ! - extern declaration for count_all_jobs() ! ! configure.in ! - check for C library function ttyname() ! ! config.h.in ! - define HAVE_TTYNAME if configure finds ttyname(3) ! ! parse.y ! - two new escape sequences for decode_prompt_string: ! ! \j number of active jobs in jobs list ! \l basename of shell's tty device name ! ! doc/{bash.1,bashref.texi}, lib/readline/doc/hsuser.texi ! - documented new `history -d' option ! - documented new \j and \l prompt string expansion sequences ! ! lib/readline/bind.c ! - new static state variable, currently_reading_init_file, set to ! 1 while _rl_read_init_file is operating on a file ! - changed _rl_init_file_error to include the name and line number ! from the init file only if currently_reading_init_file is non-zero ! (this is needed since applications like bash can call ! rl_parse_and_bind, and error messages from those calls would be ! misleading if they referred to the last inputrc file read ! ! bashline.c ! - support for a `extended command keymap', which will allow ! readline key sequences to be bound to unix commands using an ! auxiliary keymap and a special function that knows how to execute ! commands from it ! - bind_keyseq_to_unix_command supports `bind -x' ! - bash_execute_unix_command is the readline callback that looks in ! an auxiliary keymap to find the shell command to execute for a ! particular key sequence ! - new variable, no_empty_command_completion, which suppresses $PATH ! searching for command completion when TAB is typed on an empty ! line ! ! bashline.h ! - extern declaration for new function bind_keyseq_to_unix_command ! ! builtins/bind.def ! - added `-x' option to bind a key sequence to a shell command ! ! builtins/help.def ! - added `-s' option to just print a builtin's short_doc ! ! builtins/shopt.def ! - added new shell option, no_empty_cmd_completion', mirroring value ! of no_empty_command_completion ! ! doc/{bash.1,bashref.texi} ! - documented new `bind -x' option ! - documented new shopt `no_empty_cmd_completion' option ! - documented new `help -s' option ! ! Makefile.in ! - changed RELSTATUS to `devel' ! ! _distribution ! - changed to `2.04' ! ! 3/15 ! ---- ! support/shobj-conf ! - add `-h $@' to linking options on Solaris 2 with gcc ! ! expr.c ! - changes to add {pre,post}-{inc,dec}rement operators (++id, --id, ! id++, id--). These are somewhat more liberal than ksh93, and ! may require more strict syntax checking down the line ! ! tests/arith.{tests,right} ! - additional tests for {pre,post}-{inc,dec}rement operators ! ! 3/16 ! ---- ! command.h ! - structures and types for ksh-93-style arithmetic `for' command ! ! configure.in ! - new `--enable-arith-for-command' option to compile arithmetic for ! command code into the shell ! ! config.h.in ! - new define, ARITH_FOR_COMMAND, turned on by configure ! ! parse.y ! - changed read_token_word to parse a set of arithmetic for expressions ! between (( and )) as long as the last token read before the `((' ! was FOR ! - added grammar rules to build arithmetic for commands ! ! make_cmd.c ! - functions to parse (( ... )) into the three sub-expressions needed ! for the arithmetic for command and create the command structures ! (done this way instead of in the grammar rules to avoid forcing ! users to quote special characters between the (( and )) ) ! ! make_cmd.h ! - extern declaration for make_arith_for_command ! ! copy_cmd.c ! - code to copy arithmetic for commands ! ! dispose_cmd.c ! - code to dispose of arithmetic for commands ! ! print_cmd.c ! - code to print arithmetic for commands ! ! execute_cmd.c ! - code to execute arithmetic for commands and note that they are ! shell control structures for the piping code ! ! doc/{bash.1,bashref.texi} ! - documented new arithmetic for command ! ! doc/bashref.texi ! - documented new configure --enable-arith-for-command option ! ! 3/17 ! ---- ! builtins/read.def ! - added `-t timeout' option and code to support it ! ! 3/18 ! ---- ! examples/loadables/Makefile.in ! - various clean targets need to descend into perl ! ! examples/loadables/perl/Makefile.in ! - added mostlyclean and maintainer-clean targets ! ! include ! - new directory, with files from lib/posixheaders ! ! lib/posixheaders ! - removed ! ! {posixwait,unionwait,maxpath}.h ! - moved from top src directory to include subdir ! ! Makefile.in,builtins/Makefile.in,lib/{glob,malloc,sh,tilde}/Makefile.in ! - updated dependencies and file lists for new include directory ! - added BASHINCDIR variable, added -I${BASHINCDIR} to cc's include path ! ! MANIFEST,support/SYMLINKS ! - updated for new include directory ! ! lib/readline/{ansi_stdlib,posixdir,posixjmp,posixstat,rlstdc}.h ! - changed symlinks to point to ../../include rather than ! ../posixheaders ! ! builtins/common.h ! - changed `#include "../stdc.h"' to `#include "stdc.h"' ! ! builtins/{cd,exec,fc,history,pushd,source,type,umask,printf}.def ! builtins/{mkbuiltins,common,evalfile,evalstring,getopt}.c ! - changed include specifications: ! ../posixstat.h -> posixstat.h ! ../filecntl.h -> filecntl.h ! ../maxpath.h -> maxpath.h ! ../memalloc.h -> memalloc.h ! ! include/shtty.h ! - new file, contents of bashtty.h and code from jobs.c that includes ! the appropriate terminal file ! ! lib/sh/shtty.c ! - new file with some tty manipulation utility functions ! ! bashtty.h ! - removed ! ! jobs.c, nojobs.c ! - include shtty.h instead of bashty.h and other code that includes ! the correct system-dependent tty include file ! ! lib/sh/Makefile.in ! - added shtty.o as part of libsh.a ! ! MANIFEST ! - added include/shtty.h and lib/sh/shtty.c, removed bashtty.h ! ! 3/19 ! ---- ! lib/readline/display.c ! - some more __MSDOS__ code to make readline work better with DJGPP: ! output \r instead of tputs(term_cr, ...) ! ! lib/readline/terminal.c ! - some changes for __DJGPP__ (one is of dubious value -- doesn't ! DJGPP have a termcap library?) ! ! 3/23 ! ---- ! configure.in ! - make sure that the $CC argument to shobj-conf is quoted ! ! support/shobj-conf ! - changes to SGI SHOBJ_LDFLAGS from David Kaelbling ! ! 3/24 ! ---- ! lib/sh/zread.c ! - interface to read(2) that restarts automatically if errno == EINTR ! ! externs.h ! - new declarations for functions in lib/sh/{zread,zwrite}.c ! ! lib/sh/Makefile.in, Makefile.in ! - add zread.c, zread.o to appropriate file lists ! ! {subst,input}.c, builtins/{evalstring.c,read.def} ! - converted some loops around read() to call zread() instead ! ! lib/readline/rltty.h ! - new struct _rl_tty_chars to save tty special characters ! ! lib/readline/rltty.c ! - new function save_tty_chars to save tty special characters ! (currently they're only saved -- nothing looks at them yet) ! - two new internal library functions, _rl_disable_tty_signals () ! and _rl_restore_tty_signals (), intended to disable tty driver ! signal processing for readline's literal-next code, so users ! can do stuff like ^V^C and have ^C end up in the readline ! buffer even if ^C is the terminal's interrupt character ! ! lib/readline/readline.c ! - changed rl_quoted_insert to disable and restore tty signal ! handling around the call to rl_read_key (), so users can put ! tty special chars into the readline buffer ! ! 3/25 ! ---- ! expr.c ! - added `,' operator (expr1 , expr2) -- both expr1 and expr2 are ! evaluated and the return value is the value of expr2. Precedence ! is higher than assignment (which makes it highest) ! - make `lasttp' (pointer to last token) part of the expression ! context that is saved and restored by {push,pop}_context. This ! is used only in error reporting ! ! doc/{bash.1,bashref.texi} ! - documented new `,' arithmetic operator ! - cleaned up some of the language concerning variables referenced ! by name within an arithmetic expression ! ! lib/readline/readline.c ! - new application-settable variable, rl_num_chars_to_read, which, if ! set to a non-zero value, causes readline to return after reading ! that many characters (or at least that many characters, if ! rl_startup_hook is used to prime the input buffer) rather than ! when reading a character bound to accept-line ! ! lib/readline/readline.h ! - extern declaration for rl_num_chars_to_read ! ! builtins/read.def ! - added new `-n nchars' option to read NCHARS from stdin rather than ! a complete line. Works both with and without using readline ! ! doc/{bash.1,builtins.texi} ! - documented new `read -n nchars' option ! ! 3/26 ! ---- ! execute_cmd.c ! - make sure all uses of PIDs are of type pid_t ! ! redir.c ! - broke stdin_redirects into two functions: stdin_redirection, which ! checks a single redirection specification, and a new stdin_redirects, ! which does what it did before but calls stdin_redirection for each ! redirection in the chain ! ! 3/29 ! ---- ! aclocal.m4 ! - new test, BASH_CHECK_DEV_STDIN, checks for /dev/stdin. If it's ! present HAVE_DEV_STDIN is defined and it's assumed that /dev/stdout ! and /dev/stderr are present as well ! ! configure.in ! - call BASH_CHECK_DEV_STDIN ! ! config.h.in ! - add HAVE_DEV_STDIN, initially undefined ! ! test.c ! - add /dev/std{in,out,err} to the special filenames that are handled ! by test_stat() if HAVE_DEV_STDIN is not defined ! ! doc/{bash.1,bashref.texi} ! - documented conditional expressions' handling of /dev/std{in,out,err} ! ! stringlib.c ! - new function, find_string_in_alist, to find (or match as an extended ! glob pattern) a string in a STRING_INT_ALIST and return the ! associated token value ! ! externs.h ! - extern declaration for find_string_in_alist ! ! redir.c ! - new STRING_INT_ALIST list of filenames the redirection code handles ! specially (_redir_special_filenames) ! - new function, redir_special_open () to handle filenames found in ! _redir_special_filenames (framework for /dev/tcp and /dev/udp, but ! those are not implemented get) ! ! doc/{bash.1,bashref.texi} ! - documented special filename handling in redirections ! ! 3/30 ! ---- ! builtins/read.def ! - added `-d delim' option, like ksh93, to read until delim rather ! than newline ! ! doc/{bash.1,bashref.texi} ! - documented new read `-d delim' option ! ! configure.in ! - look for gethostbyname(3), inet_aton(3) ! - look for and ! - call BASH_FUNC_GETHOSTBYNAME if gethostbyname(3) is not in libc ! - check for u_int and u_long types, default to `unsigned int' and ! `unsigned long' respectively ! - new enable option `--enable-net-redirections' to compile in the ! /dev/tcp and /dev/udp redirection code ! ! aclocal.m4 ! - new macro, BASH_FUNC_GETHOSTBYNAME, looks for gethostbyname(3) in ! the socket libraries if it's not found in libc ! ! config.h.in ! - new defines: HAVE_GETHOSTBYNAME, HAVE_INET_ATON, HAVE_NETDB_H, ! HAVE_NETINET_IN_H, NETWORK_REDIRECTIONS ! - new defines: u_int, u_long ! ! lib/sh/inet_aton.c ! - new file, from GNU libc, slightly modified to remove inet_addr() ! ! lib/sh/netopen.c ! - new file, functions to create tcp/udp network connections. Exports ! a single function: netopen(pathname) ! ! externs.h ! - extern declaration for netopen() ! ! lib/sh/Makefile.in, Makefile.in, MANIFEST ! - added appropriate references to inet_aton.c and netopen.c ! ! config-bot.h ! - if HAVE_SYS_SOCKET_H, HAVE_GETPEERNAME, and HAVE_NETINET_IN_H are ! all defined, define HAVE_NETWORK ! ! redir.c ! - call netopen for pathnames of the form /dev/(tcp|udp)/host/port ! if HAVE_NETWORK is defined; print a warning message otherwise ! - /dev/tcp and /dev/udp code is only compiled in if ! NETWORK_REDIRECTIONS is defined ! ! 3/31 ! ---- ! lib/sh/zread.c ! - new function, zsyncfd(fd) which syncs the kernel's seek pointer on ! FD with the last character returned by zreadc() ! ! externs.h ! - extern declaration for zsyncfd ! ! builtins/read.def ! - use zreadc if the input is not unbuffered (this cuts the number ! of read(2) calls *way* down) ! - if input is not unbuffered, call zsyncfd before returning to make ! sure zreadc's buffering doesn't consume too much input ! ! 4/1 ! --- ! Makefile.in ! - install bashbug with mode 555 ! ! 4/2 ! --- ! shell.c ! - make want_pending_command and read_from_stdin global rather than ! local variables ! ! flags.c ! - change which_set_flags to insert `c' and `s' if the `-c' and `-s' ! invocation options, respectively, were supplied at shell startup ! ! bashline.c ! - change bash_directory_completion_hook to change the logic for ! deciding whether or not to parameter expand the directory name -- ! now we expand only if there's a `$' (still has problems if the ! user quoted the `$') or a `` pair. Fixes bug reported by ! chuckjr@sinclair.net. To fix the `$' problem, could possibly ! check what the user typed with rl_line_buffer and start, end ! parameters to gen_completion_matches ! - changed attempt_shell_completion to slightly adjust the logic for ! deciding whether or not a word is in a command position: if the ! word being completed has a single opening single or double quote ! before the command separator, treat it as a candidate for (quoted) ! command word completion ! - now that we understand partially-quoted strings as completion ! candidates, we can do command completion on certain unclosed ! uses of $(... ! ! subst.c ! - change extract_delimited_string to not return an error for an ! unclosed construct if DOING_COMPLETION is non-zero ! ! 4/5 ! --- ! expr.c ! - fixed `ss=09 ; let ss=10' bug by introducing one-token lookahead ! after a string token is parsed. If the next token is `=', we ! don't evaluate the variable's value as an expression, since it's ! not going to be used ! ! variables.h ! - added new member to struct variable: exportstr -- for the future ! caching of strings to be placed into the environment ! - extern declaration for bind_variable_value ! ! variables.c ! - make sure that the `exportstr' member of a struct variable is ! initialized correctly, and put code in to free it where appropriate ! (if non-null) ! - new function, bind_variable_value(VAR, VALUE); make shell variable ! VAR have value VALUE ! - make sure var->exportstr is invalidated when a variable or function ! is assigned a value ! ! builtins/declare.def ! - call bind_variable_value instead of duplicating some of bind_variable ! inline ! ! 4/6 ! --- ! variables.h ! - new macros, VSETATTR and VUNSETATTR to set and clear variable ! attributes ! ! builtins{read,set,setattr,declare}.def,{execute_cmd,expr,shell,subst,variables}.c ! - change to use VSETATTR and VUNSETATTR ! ! 4/7 ! --- ! doc/Makefile.in ! - if htmldir is set by configure, install the html files into that ! directory with `make install' and remove them with `make uninstall' ! ! Makefile.in,doc/Makefile.in ! - htmldir is set by configure and passed from the Makefile to the ! install in the doc subdirectory ! ! configure.in ! - substitute `htmldir' into Makefiles ! ! support/config.guess ! - some small changes for Apple's Rhapsody ! ! lib/termcap/Makefile.in ! - make the `distclean' and `maintainer-clean' targets remove Makefile ! ! lib/termcap/ltcap.h ! - new private library include file, for Rhapsody __private_extern__ ! define ! ! lib/termcap/{termcap,tparam}.c ! - include "ltcap.h" ! - if HAVE_CONFIG_H is defined, include if HAVE_STDLIB_H is ! defined, otherwise declare getenv, malloc, realloc as extern ! - add __private_extern__ qualifier for extern data that Rhapsody ! requires ! ! shell.c ! - don't run the startup files in the rshd case if shell_level is >= 2 ! This should catch the case of ! rsh machine bash -c 'echo a' ! running the .bashrc twice, once for the shell started by rshd and ! one for the shell running -c command ! ! 4/8 ! --- ! variables.c ! - in initialize_shell_variables, unset the export attribute from ! SSH_CLIENT if it exists and we got it from the initial environment ! ! shell.c ! - don't bother unsetting export attribute from SSH_CLIENT, since we ! now do it in initialize_shell_variables ! ! lib/readline/display.c ! - don't check prompt_this_line[-2] in rl_redisplay if prompt_this_line ! isn't at least 2 characters after the start of rl_display_prompt ! ! lib/readline/histfile.c ! - change the name of the default history file to _history on MS-DOS ! ! lib/readline/histlib.h ! - add an extern declaration for history_offset ! ! lib/readline/hist{expand,search}.c ! - remove extern declaration for history_offset; now in histlib.h ! ! lib/readline/xmalloc.h ! - new file, extern declarations for xmalloc, xrealloc, xfree ! ! lib/readline/rlprivate.h ! - new file, with extern declarations for `readline private' global ! variables and functions ! ! lib/readline/rlshell.h ! - new file, with extern function declarations for stuff in shell.c ! ! lib/readline/Makefile.in ! - add dependencies on xmalloc.h, rlshell.h ! - add xmalloc.h, rlprivate.h to list of header files ! ! MANIFEST ! - add lib/readline/xmalloc.h, lib/readline/rlprivate.h, ! lib/readline/rlshell.h ! ! Makefile.in ! - add $(RL_LIBSRC)/xmalloc, $(RL_LIBSRC)/rlprivate.h, ! $(RL_LIBSRC)/rlshell.h to READLINE_SOURCE variable ! ! lib/readline/{bind,complete,display,funmap,histexpand,histfile,history,input, ! isearch,keymaps,kill,macro,readline,search,shell,util,vi_mode}.c ! - include "xmalloc.h" rather than extern declarations for xmalloc, ! xrealloc, xfree ! ! lib/readline/terminal.c ! - new function, used in two places, _emx_get_screensize for EMX ! ! lib/readline/readline.c ! - EMX apparently no longer needs _emx_build_environ ! ! lib/readline/signals.c ! - support for __EMX__ in rl_signal_handler ! - don't set the old handler passed to rl_set_sighandler to ! rl_signal_handler, because that would cause infinite recursion if ! that signal were generated ! ! lib/readline/xmalloc.c ! - no longer the same as lib/malloc/xmalloc.c, which is no longer ! used by anyone ! - changes to include xmalloc.h, define READLINE_LIBRARY, change ! some of the argument types ! ! lib/tilde/tilde.c ! - add prototypes for extern function declarations if __STDC__ ! defined ! ! lib/readline/{terminal,bind,readline,nls,histexpand}.c ! - include "rlshell.h" for function prototypes ! ! 4/9 ! --- ! lib/readline/{bind,callback,complete,display,input,isearch,kill,macro,nls, ! parens,readline,rltty,search,signals,terminal,util,vi_mode}.c ! - include "rlprivate.h" ! - remove extern declarations already in rlprivate.h ! ! xmalloc.c ! - xfree should take a PTR_T as its argument ! ! general.h ! - change prototype for xfree to use void * instead of char * ! ! lib/malloc/malloc.c ! - define PTR_T like it is defined in general.h ! - malloc() returns a PTR_T ! - free() takes a PTR_T as its argument ! - realloc() returns a PTR_T and takes a PTR_T as its first argument ! - memalign returns a PTR_T ! - valloc returns a PTR_T ! - calloc returns a PTR_T ! - cfree() takes a PTR_T ! ! variables.c ! - new function: char **all_variables_matching_prefix (char *prefix) ! ! variables.h ! - extern declaration for all_variables_matching_prefix ! ! bashline.c ! - converted variable_completion_function to use ! all_variables_matching_prefix ! ! stringlib.c ! - new function, char **alloc_array(n), allocates an argv-style ! array of strings with room for N members ! ! externs.h ! - extern declaration for alloc_array ! ! 4/13 ! ---- ! lib/readline/keymaps.c ! - include "readline.h" ! - remove extern function declarations ! ! include/stdc.h ! - break the definition of __P out from a strict __STDC__ block, ! since __GNUC__ and __cplusplus also indicate that prototypes ! are available ! ! lib/readline/readline.h ! - adjust conditional declaration of rl_message, since __cplusplus ! indicates that prototypes are available ! ! lib/readline/rlstdc.h ! - private copy, modified, no longer symlinked to ../../include/stdc.h ! - __P is defined if __GNUC__ or __cplusplus is defined ! - removed defines for __STRING, const, inline, signed, volatile, since ! readline does not use them ! ! lib/readline/{search,readline}.c ! - extern declaration for _rl_free_history_entry with prototypes, ! since it's not in rlprivate.h ! ! lib/readline/history.h ! - added some missing `extern's in function declarations ! ! lib/readline/undo.c ! - include "rlprivate.h" ! ! lib/readline/shell.c ! - include "rlshell.h" ! ! lib/readline/Makefile.in ! - update dependencies for undo.c, shell.c ! ! lib/tilde/tilde.h ! - add #define for __P if not already defined ! - use prototypes in extern function declarations with __P() ! ! lib/readline/doc/rluserman.texinfo ! - new file, derived from rlman.texinfo ! ! {bashline,findcmd,general,pathexp}.c, builtins/getopts.def ! - call alloc_array(N) instead of (char **)xmalloc (N * sizeof (char *)) ! ! subst.c ! - added code to implement ksh-93 ${!prefix*} expansion ! ! doc/{bash.1,bashref.texi} ! - documented new ${!prefix*} expansion ! ! 4/15 ! ---- ! execute_cmd.c ! - new variable, this_shell_function, points to SHELL_VAR of currently ! executing shell function ! ! variables.c ! - new dynamic variable, FUNCNAME -- invisible when not executing shell ! function ! ! doc/{bash.1,bashref.texi} ! - documented new FUNCNAME variable ! ! 4/16 ! ---- ! support/rlvers.sh ! - add -T option to specify correct termcap library ! ! configure.in ! - Irix 4.x still needs to link with -lsun if it contains a replacement ! getpwent function that works with NIS ! - if we're configuring with an already-installed readline library, ! call BASH_CHECK_LIB_TERMCAP and pass the resulting $TERMCAP_LIB to ! support/rlvers.sh ! ! lib/readline/readline.c ! - in rl_forward, if rl_point ends up being < 0, set it to 0 ! ! lib/readline/exammples/excallback.c ! - new callback example code, from `Jeff Solomon ' ! ! lib/sh/getcwd.c ! - define NULL as 0 if not defined by one of the standard include files ! - cast result of malloc and realloc to (char *) where appropriate ! ! variables.c ! - new functions for use by dynamic variables: null_assign and ! null_array_assign. Used as assign_func for a particular variable, ! they cause assignments to that variable to be silently ignored ! - FUNCNAME and GROUPS are no longer readonly ! - FUNCNAME changed to use null_assign ! - GROUPS changed to use null_array_assign. This means that the ! variable can be unset if desired (like for Oracle startup scripts), ! but cannot be assigned to ! ! doc/{bash.1,bashref.texi} ! - added text about assignments being silently discarded to descriptions ! of FUNCNAME and GROUPS ! - removed text saying that GROUPS is readonly ! - added standard text about GROUPS being unset and losing its special ! properties, even if reset ! ! command.h ! - new command type, cm_subshell, actually causes the shell to fork ! and then executes the command in the SUBSHELL_COM struct ! ! parse.y ! - ( ... ) now creates a command of type cm_subshell, with the same ! flag CMD_WANT_SUBSHELL as previous ! ! make_cmd.c ! - new function make_subshell_command ! ! make_cmd.h ! - extern declaration for make_subshell_command ! ! dispose_cmd.c ! - code to destroy a SUBSHELL_COM ! ! copy_cmd.c ! - code to duplicate a SUBSHELL_COM ! ! print_cmd.c ! - code to print a SUBSHELL_COM ! ! execute_cmd.c ! - broke the code that handles executing commands in subshells out of ! execute_command_internal into a new function, execute_in_subshell, ! with the same arguments ! - executing a command of type cm_subshell is just a slightly special ! case, handled in execute_in_subshell ! ! 4/18 ! ---- ! execute_cmd.c ! - changed code in execute_command_internal that executes subshell ! commands to check for command->type == cm_subshell in addition to ! checking that commmand->flags & CMD_WANT_SUBSHELL is non-zero ! - changed execute_in_subshell to set the CMD_NO_FORK flag on the ! command to be executed by a command of type cm_subshell ! (command->value.Subshell->command), if that command is a simple ! command (type == cm_simple) or a nested subshell (type == cm_subshell) ! and is not being timed ! - changed execute_command_internal to just call and return the value ! returned by execute_in_subshell if it gets a command of type ! cm_subshell with flags including CMD_NO_FORK ! ! lib/malloc/malloc.c ! - morecore() should always return through morecore_done, not with a ! simple `return' ! ! 4/20 ! ---- ! variables.c ! - new function, quote_array_assignment_chars, backslash quotes all ! `[' and `]' before an `=' in a word that's part of the body of a ! compound array assignment. Needed because we run the list through ! the globbing code now. Don't bother if `=' does not appear in ! the string or if the first char is not `[' ! - call quote_array_assignment_chars from assign_array_var_from_string ! now ! ! eval.c ! - moved parse_string_to_word_list to parse.y ! ! parse.y ! - moved parse_string_to_word_list here. Much simpler -- no longer ! tries to parse a command, but just reads tokens using read_token(). ! Any token but a WORD or ASSIGNMENT_WORD causes a syntax error. ! Don't have to mess around with saving global_command or calling ! parse_command, but do need to save and restore the history stuff, ! so the array assignment doesn't get saved on the history list ! ! 4/21 ! ---- ! nojobs.c ! - changed to use functions in lib/sh/shtty.c (tt{get,set}attr) for ! the terminal attributes ! - added a `flags' field to struct proc_status, flags are PROC_RUNNING ! and PROC_NOTIFIED (status has been returned to `wait') ! - functions check flags & PROC_RUNNING to check whether or not a ! particular process is still alive; PROC_RUNNING is reset by ! set_pid_status ! - new function, mark_dead_jobs_as_notified, same function as the one ! in jobs.c ! - cleanup_dead_jobs reaps jobs only if they're dead and not marked ! as notified ! - wait_for_background pids marks all pids as notified and reaps them ! before it returns, since it's called by the `wait' builtin ! - wait_for_single_pid marks the pid being waited for as notified so ! its slot can be reclaimed -- it's only called by the `wait' builtin ! - new function, process_exit_status, to turn what wait(2) takes into ! an exit status ! ! 4/22 ! ---- ! nojobs.c ! - add_pid takes a new second argument, async_p, which is non-zero if ! the process is in the background ! - new flag, PROC_ASYNC, set by add_pid ! - set_pid_status now sets the PROC_NOTIFIED flag if PROC_ASYNC is unset, ! so foreground jobs get cleaned up right away ! - changed mark_dead_jobs_as_notified to take a `force' argument; if ! non-zero, it marks only enough dead jobs to make the number of ! un-notified dead jobs < CHILD_MAX ! - new function, reap_dead_jobs, same as in jobs.c ! ! execute_cmd.c ! - don't need separate cases for REAP any more ! ! 4/23 ! ---- ! builtins/printf.def ! - new function, tescape, which processes a single backslash ! escape sequence and returns the number of characters consumed by ! the argument string (code taken from bexpand) ! - changed bexpand to call tescape rather than do backslash-escape ! sequence conversion itself ! - changed occurrences of `illegal' in error messages to `invalid' ! - printf no longer calls ansicstr to translate backslash-escape ! sequences; the mainline printf code now calls tescape whenever it ! hits a backslash ! ! 4/26 ! ---- ! subst.c ! - new variable, garglist, set to list of words to be expanded after ! leading assignment statements are removed ! - command_substitute now calls maybe_make_exported_env before making ! the child process if there are no variable assignments preceding ! the command currently being expanded, or if the command currently ! being expanded consists only of variable assignments ! ! execute_cmd.c ! - the `early fork' code in execute_simple_command now calls ! maybe_make_export_env before forking because execute_disk_command ! would do that in the vast majority of cases, and this will obviate ! the need to do it for subsequent commands if the environment does ! not change ! ! 4/27 ! ---- ! variables.h ! - more macros to manipulate the exportstr member of a SHELL_VAR ! - changed initialize_shell_variables to cache the value from the ! environment as the initial exportstr for all imported variables ! - changed make_var_array to use exportstr if it exists, instead ! of computing the value ! - changed make_var_array to cache exportstr for exported functions, ! so they don't have to be deparsed every time the export env is ! remade ! ! 4/28 ! ---- ! lib/readline/{histlib,rldefs}.h ! - changed STREQN macro to evaluate to 1 if the third argument is 0 ! ! lib/readline/search.c ! - changed rl_history_search_{for,back}ward so they leave point at ! the end of the line when the string to search for is empty, like ! previous-history and next-history ! - broke common code out of rl_history_search_{for,back}ward into ! a new function, rl_history_search_reinit ! - rewrote rl_history_search_internal to be more like the ! non-incremental search functions, use noninc_search_from_pos, ! and leave the last history line found in the current line buffer ! if the search fails ! - new function, make_history_line_current, takes care of making ! the current line buffer a copy of the history entry passed as an ! argument; used by rl_history_search_internal and noninc_dosearch ! ! subst.c ! - make ${!prefix@} be the same as ${!prefix*} for (undocumented) ! ksh93 compatibility ! ! 4/30 ! ---- ! lib/readline/doc/rltech.texinfo ! - added note about including , and that ! should be included before readline.h ! ! lib/readline/doc/hstech.texinfo ! - added note about including ! ! lib/readline/doc/manvers.texinfo ! - updated version to 4.1 ! ! lib/readline/{bind,complete,display,isearch,nls,parens,readline,signals,tilde, ! histexpand}.c ! - added prototypes with __P((...)) for forward static function ! declarations ! ! lib/readline/display.c ! - broke the code that initializes VISIBLE_LINE and INVISIBLE_LINE out ! of rl_redisplay into a new function, init_line_structures, which ! takes an argument giving the minimum number of characters that the ! line must hold ! - new function for use by applications that want to display the ! initial prompt themselves rather than having the first call to ! readline do it: rl_on_new_line_with_prompt (modified from code in ! the CLISP distribution) ! ! lib/readline/readline.c ! - new external variable, rl_already_prompted, to let readline know ! that the prompt string has already been displayed on the screen ! before the first call to readline ! - test rl_already_prompted before displaying the prompt in ! readline_internal_setup ! - if rl_already_prompted is non-zero, readline_internal_setup calls ! rl_on_new_line_with_prompt instead of rl_on_new_line ! ! lib/readline/readline.h ! - extern declaration for rl_on_new_line_with_prompt ! - extern declaration for rl_already_prompted ! ! lib/readline/doc/rltech.texinfo ! - documented rl_on_new_line_with_prompt and rl_already_prompted ! ! builtins/read.def ! - new -s option (silent mode). Input from a terminal is not echoed ! ! doc/{bash.1,bashref.texi} ! - documented new `-s' option to read builtin ! ! 5/3 ! --- ! lib/readline/vi_mode.c ! - replaced references to rl_getc with (*rl_getc_function) ! ! [bash-2.04-devel frozen] ! ! 5/5 ! --- ! subst.c ! - make sure that verify_substring_values always passes malloc'd ! memory to maybe_expand_string as the string to be expanded, ! since it gets freed on errors ! ! support/shobj-conf ! - don't need -R option for shared libraries on Solaris ! - new stanza for OSF/1 machines with gcc ! ! lib/readline/readline.c ! - new variable, rl_gnu_readline_p, always 1. Available to allow ! readline users to test whether or not they're linking against ! the true readline, rather than some bogus replacement (from CLISP) ! ! lib/readline/readline.h ! - extern declaration for rl_gnu_readline_p ! ! hashlib.h, hashcmd.h ! - added prototypes to extern function declarations ! ! pcomplete.h ! - new file, declarations for the programmable completion stuff ! ! pcomplib.c ! - new file, library functions for programmable completion ! ! 5/6 ! --- ! builtins/complete.def ! - new file, interface to programmable completion management ! ! configure.in ! - new enable argument --enable-progcomp, defines ! PROGRAMMABLE_COMPLETION ! ! config.h.in ! - #define for PROGRAMMABLE_COMPLETION ! ! config-bot.h ! - if PROGRAMMABLE_COMPLETION is defined and READLINE is not, ! #undef PROGRAMMABLE_COMPLETION ! ! pcomplete.c ! - new file, placeholder for programmable completion generators and ! associated functions ! ! Makefile.in, builtins/Makefile.in ! - changes to add pcomplete.c, builtins/complete.def ! ! 5/7 ! --- ! subst.c ! - new function, #ifdef READLINE, skip_to_delim (s, i, delims). ! Starting at s[i], return the index of the first character in s ! that is contained in delims. Understands shell quoting. ! - added two arguments to list_string_with_quotes: an index to ! watch for, and a pointer to int to return the index into the ! created word list of the word containing the sentinel. Now ! compiled in all the time. The returned index starts at 1. ! ! subst.h ! - extern declarations for char_is_quoted, unclosed_pair, and ! skip_to_delim ! - changed extern declaration for list_string_with_quotes, moved ! it out of the #ifdef ARRAY_VARS section ! ! bashline.c ! - removed extern declarations for char_is_quoted and unclosed_pair ! ! variables.c ! - new function, SHELL_VAR **all_exported_variables() ! = new function, SHELL_VAR **all_array_variables(), #ifdef ARRAY_VARS ! ! variables.h ! - extern declaration for all_exported_variables, all_array_variables ! ! lib/sh/strpbrk.c ! - replacement if we don't have strpbrk(3) ! ! configure.in, config.h.in ! - check for strpbrk(3), define HAVE_STRPBRK if found ! ! builtins/shopt.def ! - new function, char **get_shopt_options (), returns an array of ! shopt option names ! ! builtins/set.def ! - new function, char **get_minus_o_opts (), returns an array of ! `set -o' option names ! ! builtins/common.h ! - extern declarations for get_shopt_options, get_minus_o_opts ! ! 5/10 ! ---- ! pathexp.c ! - make the POSIX_GLOB_LIBRARY code implement the GLOBIGNORE stuff ! ! 5/11 ! ---- ! array.c ! - new convenience function, char **array_to_argv (ARRAY *), ! converts an array to a list of string values ! ! array.h ! - extern declaration for array_to_argv ! ! execute_cmd.c ! - new convenience function, int execute_shell_function (SHELL_VAR *, ! WORD_LIST *) ! ! execute_cmd.h ! - extern declaration for execute_shell_function ! ! builtins/evalstring.c ! - make parse_and_execute unwind_protect current_prompt_string ! if the shell is interactive ! ! 5/12 ! ---- ! variables.c ! - moved bind_int_variable from expr.c to here; it now returns a ! SHELL_VAR *, like the other variable binding functions ! ! variables.h ! - extern declaration for bind_int_variable ! ! 5/14 ! ---- ! bashline.c, parse.y, general.c, make_cmd.c, subst.c, braces.c, execute_cmd.c ! - replaced some common code sequences with calls to substring() ! ! lib/readline/doc/rltech.texinfo ! - fixed small typo in description of rl_completion_entry_function ! ! 5/18 ! ---- ! stringlib.c ! - new function, strcreplace(char *string, int c, char *text, int do_glob) ! replaces all occurrences of C in STRING with TEXT. Backslash may ! be used to quote C. If DO_GLOB is non-zero, the replacement TEXT ! is quoted to protect globbing characters. ! ! externs.h ! - extern declaration for strcreplace ! ! bashhist.c ! - use strcreplace in expand_histignore_pattern ! ! pcomplete.c ! - finished initial implementation of programmable completion ! ! alias.c ! - code to set the aliases itemlist to dirty when an alias is added ! or removed, if PROGRAMMABLE_COMPLETION is defined ! ! variables.c ! - code to set the functions itemlist to dirty when a shell function ! is added or removed, if PROGRAMMABLE_COMPLETION is defined ! ! builtins/enable.def ! - code to set the builtins itemlist to dirty when a shell builtin ! is added or removed, if PROGRAMMABLE_COMPLETION is defined ! - code to set the enabled and disabled itemlists to dirty when a ! builtin is enabled or disabled, if PROGRAMMABLE_COMPLETION is ! defined ! ! builtins/shopt.def ! - new shell option, `progcomp', on if programmable_completion_enabled ! (from pcomplete.c) is non-zero ! ! doc/{bash.1,bashref.texi} ! - note that `${' is not eligible for brace expansion to avoid ! conflicts with parameter expansion ! ! 5/19 ! ---- ! builtins/complete.def ! - added a new `compgen' builtin for use by completion functions ! ! 5/21 ! ---- ! bashline.c ! - new function, void clear_hostname_list(void), to delete all the ! entries in the hostname completion list ! ! bashline.h ! - extern declaration for clear_hostname_list ! ! variables.c ! - changed sv_hostfile to clear the hostname list if $HOSTFILE is ! unset ! ! doc/{bash.1,bashref.texi} ! - documented new behavior of HOSTFILE when it's unset ! - added some awkwardly-worded text to make it clear that an ! interactive shell cannot be started with non-option arguments ! or with the -c option ! ! shell.c ! - restored NON_INTERACTIVE_LOGIN_SHELLS test, so that if it is ! defined, shells with argv[0][0] == '-' and not in posix mode ! run the startup files even if non-interactive ! ! config-top.h ! - added commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS ! ! 5/24 ! ---- ! subst.c ! - make sure the characters in IFS are cast to unsigned before being ! indexed in ifscmap (expand_word_internal) ! ! 5/25 ! ---- ! parse.y ! - change grammar rule for arithmetic for expressions to handle a ! list_terminator after the `))' instead of requiring a newline_list ! ! subst.c ! - fix so that variable indirection can reference the shell's special ! variables (like $0...$9, $$, $#, etc.) ! ! pcomplete.c ! - changed gen_wordlist_matches to use split_at_delims to split the ! string at $IFS first, then expand each individual word ! ! 5/27 ! ---- ! lib/readline/histfile.c ! - change things so that O_BINARY mode is used when reading and writing ! the history file on cygwin32 as well as OS/2 (__EMX__) ! ! parse.y ! - add calls to push_delimiter and pop_delimiter around the call ! to parse_matched_pair when parsing $'...' and $"..." so the ! history entry is added correctly ! ! 5/28 ! ---- ! doc/{bash.1,bashref.texi}, lib/readline/doc/rluser.texinfo ! - documented new programmable completion facilities ! ! doc/bashref.texi ! - documented new configure `--enable-progcomp' option ! ! 6/1 ! --- ! variables.c ! - if make_local_variable is being asked to make a local shadow ! variable of a read-only variable, print an error message and ! return NULL ! - if make_local_variable returns NULL to make_local_array_variable, ! just return it ! ! builtins/declare.def ! - if we're making local variables, and make_local_array_variable or ! make_local_variable returns NULL, just flag an error and go on ! ! 6/2 ! --- ! Makefile.in ! - changed release status to `alpha1' ! ! [bash-2.04-alpha1 frozen] ! ! 6/18 ! ---- ! bashline.c ! - fixed find_cmd_start so that it doesn't spin-loop on commands with ! a command separator like `;' or `&'. Problem was not incrementing ! `os' past the delimiter found ! ! 6/21 ! ---- ! variables.c ! - cosmetic change: introduced two macros to encapsulate initialization ! of dynamic variables ! ! 6/23 ! ---- ! pcomplib.c ! - new function: num_progcomps(void), returns the number of entries in ! the programmable completions hash table ! ! pcomplete.h ! - extern declaration for num_progcomps ! ! bashline.c ! - make sure some programmable completions have been defined before ! diving into the programmable completion code ! ! shell.c ! - in open_shell_script, move the fd opened to the script to a high ! one with move_to_high_fd in all cases -- the buffered input code ! still has problems if fd == 0 and later on fd 0 is closed or ! redirected (cf. input.c:check_bash_input()) ! ! builtins/printf.def ! - getlong() now calls strtol directly with a third argument of 0 so ! it can handle 0x (hex) and 0 (octal) prefixes, which legal_number ! does not -- this has implications for arguments to %d that begin ! with `0' ! ! lib/sh/getenv.c ! - make sure that the variable found in the temporary environment has ! a non-null value before calling savestring() on it ! ! subst.c ! - make sure split_at_delims returns 0 in *nwp and *cwp if handed a ! null or empty string ! ! pcomplete.c ! - make sure build_arg_list handles lwords == 0, as it will be if an ! empty command line is handed to the programmable completion code ! (like compgen -C xyz) ! ! execute_cmd.c ! - make sure execute_shell_function passes a non-null bitmap of fds to ! close to execute_function, allocating and deallocating it locally ! ! sig.c ! - don't mess with SIGPROF in initialize_terminating_signals ! ! jobs.c, nojobs.c ! - if the user has requested it with checkwinsize, check for a new ! window size after a job exits due to a signal as well as being ! stopped ! ! lib/readline/kill.c ! - changed rl_kill_region to set the point to the beginning of the ! region after the kill is performed ! ! 6/24 ! ---- ! configure.in ! - make sure ranges ([1-9]*) are protected with [...] for m4 quoting ! ! variables.c ! - make sure that bind_variable_value honors `set -a' and that it ! marks the environment for recreation if necessary ! ! 6/25 ! ---- ! lib/readline/complete.c ! - if we're completing at the end of the line, find_completion_word ! shouldn't test whether the character is a special word break ! char and (possibly) advance rl_point past the end of the buffer ! ! parse.y ! - change mk_msgstr to write embedded newlines as `\n""', as the ! PO file format apparently requires ! ! 6/28 ! ---- ! lib/readline/display.c ! - code to manage the growth of the inv_lbreaks and vis_lbreaks arrays ! beyond 256, since there are pathalogical command lines that can ! have more than 256 line breaks for redisplay ! ! 6/30 ! ---- ! stringlib.c ! - include pathexp.h for extern declaration of quote_globbing_chars ! ! variables.h ! - change CACHE_EXPORTSTR to savestring() the value and not set the ! att_importstr flag ! ! 7/6 ! --- ! support/bashbug.sh ! - bashbug now accepts --help and --version options ! ! bashline.c ! - change bash_quote_filename to use single quotes if the user ! does not specify an opening quote character and the filename being ! completed contains newlines ! ! 7/8 ! --- ! configure.in, aclocal.m4, config.h.in ! - BASH_TYPE_INT32_T --> BASH_TYPE_BITS32_T; int32_t --> bits32_t ! - BASH_TYPE_U_INT32_T --> BASH_TYPE_U_BITS32_T; u_int32_t --> u_bits32_t ! ! lib/malloc/{malloc,gmalloc}.c, lib/sh/inet_aton.c ! - int32_t --> bits32_t; u_int32_t --> u_bits32_t ! ! aclocal.m4 ! - new tests: BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T ! ! configure.in ! - add check for sizeof short, sizeof char ! - call BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T ! ! config.h.in ! - new #defines for bits16_t, u_bits16_t ! ! lib/malloc/malloc.c ! - use u_bits16_t for type of mi_magic2 ! ! ! 7/16 ! ---- ! lib/readline/display.c ! - new private library function, _rl_strip_prompt, to remove instances ! of RL_PROMPT_{START,END}_IGNORE from the passed prompt string ! ! lib/readline/rlprivate.h ! - extern declaration for _rl_strip_prompt ! ! lib/readline/readline.c ! - call _rl_strip_prompt before outputting the prompt if we're not ! doing any echoing of input chars (readline_echoing_p == 0) ! ! Makefile.in ! - tentative change to rule for parser-built: use $< instead of ! `y.tab.h' in recipe ! ! 7/19 ! ---- ! support/config.{guess,sub} ! - add code to handle all versions of Mac OS (e.g., Mac OS X) ! ! 7/26 ! ---- ! lib/readline/bind.c ! - on cygwin32, treat \r\n as a line terminator when reading the ! inputrc file ! ! 7/29 ! ---- ! lib/sh/netopen.c ! - fixed problem in _getaddr with copying the address returned from ! gethostbyname to the `struct in_addr *' argument -- hostnames ! now work in /dev/(tcp|udp)/host/port ! ! 8/2 ! --- ! configure.in ! - on Apple Rhapsody systems, set LOCAL_CFLAGS to -DRHAPSODY ! ! variables.h ! - changes from Apple for building fat binaries on Rhapsody, ! setting HOSTYPE, OSTYPE, VENDOR, and MACHTYPE ! ! lib/readline/terminal.c ! - some work on the `dumb terminal' setup code in _rl_init_terminal_io ! to make sure it's complete for use by the redisplay code and some ! stuff in {readline,complete}.c ! ! lib/readline/display.c ! - new function, _rl_current_display_line, returns the number of ! lines down from the first `screen line' of the current readline ! line the cursor is ! ! lib/readline/readline.c ! - make rl_refresh_line call _rl_current_display_line ! ! lib/readline/rlprivate.h ! - extern declaration for _rl_current_display_line ! ! 8/3 ! --- ! doc/bashref.texi ! - reorganized slightly: ! o a new shell builtins chapter ! o a new shell variables chapter ! o a new special builtins section ! o bourne shell features chapter removed ! o alias builtins moved to the bash builtins section ! o bourne shell differences moved to appendix ! o order of readline and history chapters swapped ! o indices are now unnumbered appendices ! o some text cleaned up and some explanatory text added ! ! lib/readline/terminal.c ! - if a calling application is using a custom redisplay function, ! don't call tgetent to get the terminal attributes, since those ! are used only by the redisplay code. Still get the window ! size, though ! ! lib/glob/fnmatch.c ! - range comparisons in bracket expressions no longer use strcoll(3), ! since in some locales (de, for example), [A-Z] matches all ! characters ! ! parse.y, print_cmd.c ! - some changes to make sure the shell compiles when ! DPAREN_ARITHMETIC is not defined but ARITH_FOR_COMMAND is ! ! 8/5 ! --- ! redir.c ! - in the here document code in do_redirection_internal, check ! that the file descriptor returned by here_document_to_fd is not ! the same as a file descriptor specified as the redirector ! before closing it ! ! 8/6 ! --- ! parse.y ! - make sure the pipline rule for `timespec BANG pipeline' sets the ! CMD_INVERT_RETURN flag for the pipeline command ! ! builtins/wait.def ! - use setjmp with a special jump buffer to take longjmps in the ! case that a SIGINT is received while waiting for jobs or processes ! it makes wait return with a status > 128, as POSIX.2 specifies ! ! {jobs,nojobs}.c ! - changed wait_sigint_handler to longjmp to wait_intr_buf if it's ! executing the wait builtin and SIGINT is trapped. It calls ! trap_handler to make sure a pending trap for SIGINT is set also, ! so the trap is taken when the wait builtin returns ! ! 8/9 ! --- ! jobs.c ! - save and restore the value of errno in sigchld_handler ! ! trap.c ! - save and restore the value of errno in trap_handler ! ! 8/10 ! ---- ! Makefile.in ! - changed release status to beta1 ! ! 8/13 ! ---- ! include/posixtime.h ! - new file to encapsulate the and mess ! ! Makefile.in ! - add posixtime.h to list of include files in BASHINCFILES ! - update dependencies for general.o, execute_cmd.o ! ! general.c, execute_cmd.c, builtins/times.def ! - include posixtime.h instead of , ! ! general.c ! - protect inclusion of with HAVE_SYS_TIMES_H check ! ! builtins/Makefile.in ! - update dependencies for times.o ! ! 8/16 ! ---- ! lib/sh/timeval.c ! - moved functions dealing with struct timevals here from general.c ! and execute_cmd.c ! ! lib/sh/clock.c ! - moved functions dealing with clock_ts here from general.c ! (print_time_in_hz renamed to print_clock_t) ! ! externs.h ! - moved extern declarations for timeval_to_secs and print_timeval ! here from general.h ! - moved extern declarations for clock_t_to_secs and print_clock_t ! here from general.h ! ! builtins/times.def ! - calls to print_time_in_hz changed to print_clock_t ! ! Makefile.in ! - added references for lib/sh/timeval.c and lib/sh/clock.c ! ! lib/sh/Makefile.in ! - clock.o and timeval.o are now included in libsh.a ! ! 8/23 ! ---- ! execute_cmd.c ! - make sure last_command_exit_value is updated before running a ! DEBUG trap in the cm_simple case of execute_command_internal ! ! lib/readline/display.c ! - new function, static void redraw_prompt (char *), used to ! redraw the last line of a multiline prompt that possibly ! contains terminal escape sequences ! - call redraw_prompt from _rl_redisplay_after_sigwinch ! ! 8/24 ! ---- ! lib/readline/bind.c ! - new struct with names of string-valued readline variables and ! handler functions to call when the variable is set ! - changed rl_variable_bind to use functions to find boolean vars ! and string vars in their respective lists ! - new function, bool_to_int, to translate a boolean value that may ! appear as an argument to `set ' to 1 or 0 ! - new function, hack_special_boolean_var, called if the element in ! the boolean_vars struct has the V_SPECIAL flag set, to provide ! any necessary other action when a boolean variable is set ! - new functions to be called when each string variable is set; ! called by rl_variable_bind ! ! execute_cmd.c ! - do_piping no longer sets pipes to O_TEXT mode if __CYGWIN32__ ! is defined ! ! 8/25 ! ---- ! subst.c ! - parameter_brace_patsub now mallocs a local copy of `patsub', because ! if it starts with a `/' we increment it, and functions down the call ! chain will free that on an error (and if we pass the incremented ! value, will try to free unallocated memory) ! - pos_params now short-circuits and returns a null string immediately ! if start == end, meaning we want 0 positional parameters ! ! 8/26 ! ---- ! subst.c ! - fixed pat_subst to correctly handle a null replacement string with ! a null pattern string prefixed with `%' or `#' ! ! 9/3 ! --- ! variables.c ! - don't import shell functions from the environment if the shell was ! started with -n ! ! 9/8 ! --- ! subst.c ! - if a command substitution is being performed inside a shell function, ! catch `return' in command_substitute so that a return inside the ! command substitution doesn't jump back to execute_function (or one ! of its brethren) and go on with the command ! ! parse.y ! - in history_delimiting_chars, if the first line is `for var' and ! command_oriented_history is active, we don't want a semicolon if ! the next token to be read is `in', but we do want one otherwise. ! All we can do is check shell_input_line and see if the next chars ! are `in' -- if so, we return " " ! ! 9/16 ! ---- ! builtins/hash.def ! - don't allow `hash -p /pathname/with/slashes name' if the shell ! is restricted ! ! doc/{bash.1,bashref.texi} ! - updated description of restricted shell mode ! ! lib/readline/display.c ! - fixed a bug in _rl_update_final which used the inv_lbreaks array ! to index into visible_line ! ! jobs.c ! - waitchld() need not go through the pain of setting up an environment ! to execute traps on SIGCHLD if children_exited == 0 ! - waitchld returns -1 if waitpid() returns -1 with errno == ECHILD, ! indicating that there are no unwaited-for child processes, and it ! has not yet reaped any dead children ! - wait_for, wait_for_single_pid return -1 if waitchld() returns -1 ! - new function, mark_all_jobs_as_dead ! - wait_for_background_pids calls mark_all_jobs_as_dead if ! wait_for_single_pid returns -1 with errno == ECHILD, since there are ! no unwaited-for child processes ! ! subst.c ! - tentative change: subshells started for command substitution no ! longer unconditionally disable job control ! ! 9/17 ! ---- ! parse.y ! - new function: save_token_state(). Saves the value of last_read_token ! and the two previous tokens in an allocated array and returns the ! array ! - new function: restore_token_state(ts). TS is an array returned by ! save_token_state. last_read_token and the two previous tokens are ! set from the values in TS ! ! trap.c ! - run_pending_traps calls save_token_state and restore_token_state ! around the call to parse_and_execute, which will call the parser ! and possibly leave it in a state where reserved words will not be ! recognized (_run_trap_internal, too) ! ! 9/20 ! ---- ! support/bashbug.sh ! - if sendmail is used as $RMAIL, pass `-i -t' as arguments so changes ! made by the user to the recipient headers in the message are ! honored ! ! 9/21 ! ---- ! bashhist.c ! - if histverify has been set, make sure a `:p' modifier to a history ! expansion prints the result ! ! builtins/echo.def ! - new extern variable, xpg_echo, set to 1 if DEFAULT_ECHO_TO_USG is ! defined and 0 otherwise ! - echo_builtin now sets the initial value of do_v9 from xpg_echo ! ! builtins/shopt.def ! - new shopt option, `xpg_echo', turns backslash escape expansion by ! `echo' on and off at runtime ! ! builtins/{bash.1,bashref.texi} ! - documented new `xpg_echo' shell option ! ! tests/{builtins.tests,builtins2.sub,shopt.tests} ! - changes for new `xpg_echo' shell option ! ! configure.in ! - changes for FreeBSD-3.x ELF to add `-rdynamic' to LOCAL_LDFLAGS. ! This allows dynamic loading of builtins ! ! support/shobj-conf ! - changes to handle FreeBSD-3.x elf or a.out object file formats ! ! 9/23 ! ---- ! [bash-2.04-beta1 released] ! ! 9/24 ! ---- ! jobs.c ! - wait_for returns -1 only if the shell is currently executing the ! `wait' builtin, since that's the only thing that cares ! ! execute_cmd.c ! - moved cases of close_fd_bitmap to before calls to do_piping to ! handle some pathological cases ! ! 9/29 ! ---- ! execute_cmd.c ! - save the command line in execute_simple_command before making the ! export environment, since maybe_make_export_env clobbers ! the_printed_command if there are exported functions ! ! 9/30 ! ---- ! configure.in,config.h.in ! - check explicitly for setvbuf; define HAVE_SETVBUF if found ! ! configure.in ! - change opt_gnu_malloc to opt_bash_malloc, since the bash malloc ! is not really the gnu malloc anymore ! - new argument, --with-bash-malloc, identical to --with-gnu-malloc ! - AC_DEFINE(USING_BASH_MALLOC) if opt_bash_malloc is enabled ! ! config.h.in ! - new #define for USING_BASH_MALLOC ! ! doc/bashref.texi ! - updated installation section to add --with-bash-malloc and ! change description of --with-gnu-malloc ! ! lib/sh/setlinebuf.c ! - change name of function to sh_setlinebuf, just returns 0 if ! HAVE_SETVBUF and HAVE_SETLINEBUF are undefined ! - prefer setvbuf to setlinebuf if we have both ! - if we're using setvbuf, use a local buffer for stdin and stdout ! local buffer is BUFSIZ unless we're using the bash malloc ! (USING_BASH_MALLOC is defined), in which case it's 1008 (which ! the bash malloc rounds up to 1024) ! ! 10/4 ! ---- ! input.c ! - if USING_BASH_MALLOC is defined, set the max buffer size to 8176, ! which the bash malloc rounds up to 8192 ! ! 10/5 ! ---- ! pcomplete.c ! - new function, pcomp_filename_completion_function, a wrapper for ! filename_completion_function that dequotes the filename first ! ! bashline.c ! - changed bash_directory_completion_matches to dequote the filename ! before passing it (indirectly) to filename_completion_function ! ! execute_cmd.c ! - change execute_command to defer calling unlink_fifo_list until any ! shell function has finished executing (variable_context == 0) ! ! configure.in ! - added AC_CYGWIN, AC_MINGW32, AC_EXEEXT ! ! 10/8 ! ---- ! subst.c ! - expand_word_internal(): changes some things to avoid small (2 or 3 ! byte) calls to xmalloc -- added a label and some gotos (BEWARE) ! - changed make_dev_fd_filename so it doesn't call sprintf anymore ! ! 10/27 ! ----- ! execute_cmd.c ! - make execute_select_command handle the effects of the `continue' ! builtin correctly ! ! 11/5 ! ---- ! Makefile.in ! - RELSTATUS changed to `beta2' ! ! 11/8 ! ---- ! [bash-2.04-beta2 released] ! ! 11/9 ! ---- ! shell.c ! - make run_startup_files check for ssh2 as well as ssh1 ! ! 11/19 ! ----- ! parse.y ! - make sure parsing conditional commands isn't confused by unexpected ! tokens (like `[[)]]') ! ! builtins/common.c ! - fix get_job_spec to return NO_JOB for numeric job specs that are ! beyond the size of the jobs table ! ! builtins/type.def ! - change describe_command to report `not found' if a path search ! returns the same string as the command name and the command name ! does not match an executable file. This has implications for ! `type' and `command -[vV]'. ! - if a command is not found in $PATH, but an executable file with the ! name supplied exists in the current directory, make the command ! into a full pathname for the `command' builtin. This has ! implications for `type' and `command -[vV]' ! ! subst.c ! - new function, expand_prompt_string, expands prompt string and ! returns the string passed if an error occurs ! ! subst.h ! - extern declaration for expand_prompt_string ! ! parse.y ! - decode_prompt_string calls expand_prompt_string instead of ! expand_string_unsplit ! ! 11/22 ! ----- ! builtins/echo.def ! - return EXECUTION_FAILURE if ferror(stdout) is true ! ! 11/23 ! ----- ! locale.c ! - if LC_ALL is unset, call setlocale(LC_ALL, lc_all), because lc_all ! holds the default locale ! ! 11/29 ! ----- ! lib/readline/shell.c ! - define NULL as 0 if it's not defined ! - change single_quote to allocate 4 characters in new string for ! each character in the old one (like builtins/common.c:single_quote) ! ! locale.c ! - when a locale variable (LC_*) is unset, pass "" to setlocale() ! to get the default locale set, since value is NULL ! ! lib/sh/makepath.c ! - new function, sh_makepath(char *path, char *dir, int flags) ! ! Makefile.in ! - changed version to beta3 ! ! builtins/type.def ! - changed describe_command to use sh_makepath() ! ! builtins/cd.def ! - removed private declaration of mkpath(), changed to use sh_makepath ! ! general.c ! - changed make_absolute to use sh_makepath ! - changed full_pathname to use sh_makepath ! ! findcmd.c ! - removed private definition of make_full_pathname, changed to use ! sh_makepath ! ! doc/{bashref.texi,bash.1} ! - added text to description of `getopts' to make it clear that getopts ! may be used to parse option characters other than letters, and ! that `:' and `?' may not be used as option characters ! ! eval.c ! - when processing a jump_to_top_level(EXITPROG), make sure the shell ! doesn't think it's still in a function by setting variable_context ! to 0 ! ! doc/rbash.1 ! - a skeletal man page for rbash, adapted from debian ! ! support/bashbug.sh ! - try to find a default editor if EDITOR is unset, rather than blindly ! using `emacs' ! ! 11/30 ! ----- ! support/config.{guess,sub} ! - many changes from the latest `automake' distribution, from the ! Debian folks ! ! 12/2 ! ---- ! lib/readline/keymaps.h, lib/tilde/tilde.h ! - added support for C++ compilation (`extern "C" {...}') ! ! 12/3 ! ---- ! subst.c ! - in process_substitute, make sure the child resets the O_NONBLOCK ! flag on the file descriptor opened for read to a named pipe ! ! jobs.c ! - new function, raw_job_exit_status, returns exit status of last job ! in pipeline ! - change job_exit_status to call raw_job_exit_status and pass the ! result to process_exit_status ! - in notify_of_job_status, get termination status from call to ! raw_job_exit_status, rather than the first job in the pipeline ! (fixes debian bug #15165) ! ! bashhist.c ! - changed bash_history to not add shell comment lines to the history ! file (fixes debian bug #21901). Uses new function shell_comment(L) ! which returns 1 if L is a shell comment line. Doesn't handle ! comments embedded in lines yet ! ! redir.c ! - when running in POSIX.2 mode, bash no longer performs word splitting ! on the expanded value of the word supplied as the filename argument ! to a redirection operator (fixes debian bug #30460) ! ! doc/bashref.texi ! - added new redirection stuff to POSIX Mode section (from previous fix) ! ! 12/6 ! ---- ! hashlib.h ! - removed extra semicolon at end of HASH_ENTRIES define ! ! redir.c ! - replaced toggling of disallow_filename_globbing flag with setting ! flags in redirection word to include W_NOGLOB if the shell is in ! POSIX mode and not interactive when expanding the filename argument ! to a redirection ! ! 12/7 ! ---- ! builtins/common.c ! - new function, backslash_quote_for_double_quotes(char *), quotes ! characters special when in double quotes in the string passed as ! an argument. ! #ifdef PROMPT_STRING_DECODE; called by decode_prompt_string ! ! builtins/common.h ! - extern declaration for backslash_quote_for_double_quotes ! ! parse.y ! - call backslash_quote_for_double_quotes instead of backslash_quote ! in decode_prompt_string ! ! 12/9 ! ---- ! parse.y ! - before expanding the \u prompt string escape sequence, make sure ! current_user.user_name is non-null and call get_current_user_info ! if it is ! ! 12/10 ! ----- ! support/mkversion.sh ! - changes to avoid relying on floating point output format, which ! can be locale-specific ! ! 12/14 ! ----- ! print_cmd.c ! - changes to named_function_string (for normal function printing) ! and print_function_def (for printing function definitions embedded ! in other commands) to print redirections that should be attached ! to the function as a whole after the closing brace ! ! tests/func1.sub ! - tests for printing functions with attached redirections, called by ! func.tests ! ! 12/16 ! ----- ! lib/readline/complete.c ! - if we're completing files in the root directory and executing the ! visible-stats code, don't pass an empty pathname to ! rl_directory_completion_hook, because, for bash, that will be ! expanded to the current directory. Just pass `/' instead. ! ! lib/tilde/tilde.c ! - fix to tilde_expand_word for Cygwin to avoid creating pathnames ! beginning with `//' if $HOME == `/' ! ! variables.c ! - don't bother with the exportstr validation on cygwin systems, ! or even using exportstr at all, since that system has weird ! environment variables ! ! 12/17 ! ----- ! configure.in ! - new option, --enable-xpg-echo-default, new name for ! --enable-usg-echo-default (which is still present for backwards ! compatibility) ! ! configure.in, config.h.in, builtins/echo.def ! - DEFAULT_ECHO_TO_USG -> DEFAULT_ECHO_TO_XPG ! ! 12/29 ! ----- ! aclocal.m4 ! - changed a couple of tests to avoid creating files with known ! names in /tmp ! ! support/rlvers.sh ! - changed to create files in /tmp/rlvers ! ! support/mksignames.c ! - now understands the POSIX.1b real-time signal names on systems ! that support them ! ! 12/30 ! ----- ! [bash-2.04-beta3 released] ! ! 12/31 ! ----- ! redir.c ! - try some more things to avoid race file replacements in ! here_document_to_fd ! ! parse.y ! - two new functions: ! get_current_prompt_level: returns 2 if current prompt is $PS2, ! 1 otherwise ! set_current_prompt_level: sets current prompt to $PS2 if arg ! is 2, $PS1 otherwise ! ! copy_cmd.c ! - make sure to copy the `line' member in copy_arith_for_command ! ! pcomplete.c ! - free up `lwords' and `line' after evaluating any command or shell ! function in gen_compspec_completions ! - after filtering any matches specified by cs->filterpat in ! gen_compspec_completions, free ret->list (the members have ! already been copied or freed by filter_stringlist) ! ! bashline.c ! - free what find_cmd_name returns after calling the programmable ! completion code ! ! 1/4/2000 ! -------- ! subst.c ! - make call_expand_word_internal set w->word to NULL if either ! expand_word_error or expand_word_fatal is returned ! ! 1/7 ! --- ! parse.y ! - two new functions: set_current_prompt_level(int) and ! get_current_prompt_level() to set and get the `level' of ! current_prompt_string (1 if $PS1, 2 if $PS2) ! ! externs.h ! - extern declarations for {get,set}_current_prompt_level ! ! builtins/evalstring.c ! - add an unwind_protect to save and restore the current prompt ! string pointers using {get,set}_current_prompt_level ! ! 1/9 ! --- ! Makefile.in ! - changed release status to `beta4' ! ! 1/18 ! ---- ! [bash-2.04-beta4 released] ! ! 1/19 ! ---- ! configure.in ! - moved checks for non-unix variants to beginning of tests ! ! Makefile.in, {builtins,support}/Makefile.in ! - added some $(EXEEXT) suffixes to generated programs for non-Unix ! systems ! ! 1/20 ! ---- ! parse.y ! - make get_current_prompt_level return 1 if current_prompt_string is ! NULL (as it would be while sourcing startup files) ! ! support/rlvers.sh ! - rmdir $TDIR in the exit trap ! - move the exit trap after we successfully create $TDIR ! ! 1/21 ! ---- ! subst.c ! - several changes to split_at_delims to make non-whitespace ! delimiters create separate fields containing those delimiters, ! like the shell parser does with meta characters. This allows ! redirection operators, for example, to be treated as separate ! words by the programmable completion code ! ! examples/complete/complete-examples ! - added new function: _redir_op, which return true if the word ! passed as an argument contains a redirection operator (just ! bare-bones for now) ! - changed set completion function to use _redir_op as an example ! ! parse.y ! - make parse_string_to_word_list save and restore the value of ! shell_input_line_terminator, since an assignment like ! COMPREPLY=() inside a shell function called by the programmable ! completion code can change shell_input_line_terminator out from ! underneath shell_getc(). shell_getc will set the input line ! terminator to EOF when it gets EOF from the getter function, and ! the string getter function returns EOF at EOS. parse_and_execute ! tests for EOS directly and never gets EOF from shell_getc, so it ! does not have this problem. ! ! 1/24 ! ---- ! lib/readline/funmap.c ! - #define QSFUNC like in complete.c ! - cast _rl_qsort_string_compare to a QSFUNC * in the call to qsort ! ! lib/readline/terminal.c ! - correct a typo in usage of the __EMX__ preprocessor define ! - fix a reversed usage of `#if defined (__DJGPP__)' in ! _rl_control_keypad ! - remove extern declarations for _rl_in_stream and _rl_out_stream ! ! lib/readline/rlprivate.h ! - add extern declaration for _rl_in_stream, since there's already ! one for _rl_out_stream ! ! builtins/ulimit.def ! - if bash is using ulimit(2), make sure that getfilesize() returns ! the value multiplied by 512 to convert it from a number of blocks ! to a number of bytes ! ! 1/25 ! ---- ! execute_cmd.c ! - make sure execute_command_internal sets last_command_exit_value ! correctly when inverting the return value of a (...) subshell ! command ! ! tests/{run-invert,invert.{tests,right}} ! - new tests for return value inversion ! ! configure.in ! - compile without bash malloc on m68k-motorola-sysv due to a file ! descriptor leak in closedir(3) -- the motorola implementation ! requires that freed memory be readable so it can free the dirent ! and then look back at it to find the file descriptor ! ! expr.c ! - fix negative exponents in v**e to return an eval error ! ! 2/1 ! --- ! Makefile.in ! - changed status to beta5 ! ! jobs.c ! - fixed a problem with checking the wrong process when checking to ! see whether or not we need to reset the tty state. The old code ! checked the first process in a pipeline; the new code checks all ! processes in the pipeline to see whether any of them exited due ! to a signal or was stopped. If none were signalled or stopped, ! the code uses the exit status of the last process in the job's ! pipeline ! ! 2/4 ! --- ! [bash-2.04-beta5 released] ! ! eval.c ! - call set_current_prompt_level instead of setting prompt_string_pointer ! directly ! ! 2/10 ! ---- ! [bash-2.04-beta5 re-released to net] ! ! 2/11 ! ---- ! sig.c ! - make sure SIGCHLD is defined in initialize_shell_signals before ! trying to use it in sigdelset() (DJGPP fix) ! ! 2/14 ! ---- ! lib/sh/shtty.c ! - include before ! - separate tests for ONLCR, ONOCR, ONLRET to cope with systems like ! DJGPP that don't implement the full POSIX termios option set ! ! builtins/psize.sh ! - set TMPDIR only if it's not already set ! ! lib/glob/glob.c ! - if a system doesn't define _POSIX_SOURCE but has a `struct dirent' ! without a d_ino member, define REAL_DIR_ENTRY to 1 so all entries ! are read ! ! configure.in ! - check for header file ! ! config.h.in ! - add HAVE_ARPA_INET_H define ! ! lib/sh/inet_aton.c ! - don't compile unless HAVE_NETWORK, HAVE_NETINET_IN_H, and ! HAVE_ARPA_INET_H are all defined in config.h or config-bot.h ! ! 2/16 ! ---- ! subst.c ! - if we have a construct like "${@:-}", we need to note that we're ! not using whatever is in $@ (we're using the rhs), so the special ! double-quoting $@ rules do not apply ! ! 2/21 ! ---- ! lib/readline/signals.c ! - declare SigHandler before using it on non-POSIX systems ! ! lib/sh/{zread,zwrite}.c ! - include unconditionally ! ! configure.in ! - m68k-motorola-sysv should be m68k-sysv in the section that sets ! opt_bash_malloc to no for certain systems ! ! builtins/complete.def ! - fixed a typo (stoppped) when printing out completion actions ! ! 2/22 ! ---- ! lib/sh/netopen.c ! - include if it's present ! ! aclocal.m4 ! - new macro, BASH_FUNC_INET_ATON, checks for inet_aton(3) including ! and , which some systems require to ! resolve the function ! ! configure.in ! - if autoconf can't fund inet_aton on its own, try BASH_FUNC_INET_ATON ! ! pcomplete.c ! - fixed a memory leak in gen_wordlist_completions ! - changed gen_wordlist_completions to do prefix-matching against the ! word being completed ! ! doc/bash.1, lib/readline/doc/rluser.texinfo ! - documented the change in behavior of the -W option to complete and ! compgen ! ! builtins/umask.def ! - if parse_symbolic_mode() returns -1, symbolic_umask needs to return ! -1 as well, otherwise the umask will be changed inappropriately ! ! input.c ! - always compile in getc_with_restart and ungetc_with_restart ! ! parse.y ! - yy_stream_get and yy_stream_unget now call getc_with_restart and ! ungetc_with_restart, respectively, to avoid problems with some ! systems not restarting the read(2) when signals that bash handles ! are received during the read (since bash installs its signal ! handlers without the SA_RESTART flag) ! ! lib/readline/complete.c ! - don't default rl_completion_case_fold to 1 if __DJGPP__ is defined ! ! 2/25 ! ---- ! subst.c ! - renamed `varlist' to `subst_assign_varlist' and made it global ! ! jobs.c ! - when running a SIGCHLD trap, need to unwind-protect ! subst_assign_varlist and set it to NULL before running the trap ! command (fix from ericw@bestnet.org and doogie@debian.org) ! ! 2/28 ! ---- ! lib/readline/doc/rltech.texinfo ! - document rl_funmap_names() ! ! 2/29 ! ---- ! subst.c ! - change split_at_delims to set the current word more appropriately ! when the cursor is between two words. Should probably change this ! again to set the current word like this only when the cursor is at ! whitespace or another delim just before the word start ! ! 3/1 ! --- ! lib/sh/shtty.c ! - more checks for flag bits being defined before using them ! ! 3/7 ! --- ! variables.h ! - fix typo in COPY_EXPORTSTR definition ! ! 3/14 ! ---- ! subst.c ! - changed split_at_delims so that if the cursor is at whitespace ! between words, and we're interested in the current word (cwp != NULL), ! make a new empty word and set the cwp to that word ! ! locale.c ! - support for setting LC_NUMERIC locale category based on value of ! LC_NUMERIC shell variable ! ! variables.c ! - LC_NUMERIC is now treated specially ! ! doc/{bash.1,bashref.texi} ! - LC_NUMERIC updates ! ! 3/15 ! ---- ! pcomplete.c ! - fix to avoid freeing memory twice ! ! 3/17 ! ---- ! [bash-2.04 released] ! ! 3/20 ! ---- ! doc/bash.1 ! - minor typo fix to description of `xpg_echo' option in `echo' ! description ! ! 3/23 ! ---- ! parse.y ! - minor fix to parse_string_to_word_list to allow newlines in ! compound array assignments ! ! 3/27 ! ---- ! lib/readline/rltty.c ! - fixed a missing-semicolon syntax error in the old 4.3 BSD tty code ! ! support/mksignames.c ! - if SIGRTMAX is >= 2*NSIG, just #undef SIGRTMIN and SIGRTMAX. This ! is an issue on AIX 4.3 (only, so far) -- checked by configure, which ! #defines UNUSABLE_RT_SIGNALS if this is the case ! ! aclocal.m4 ! - new macro, BASH_CHECK_RTSIGS, checks whether or not real-time ! signals are defined with large values and defines UNUSABLE_RT_SIGNALS ! if they are ! ! config.h.in ! - place marker for UNDEF_RT_SIGNALS (initially undefined) ! ! configure.in ! - call BASH_CHECK_RTSIGS in the `bash miscellaneous' section ! ! 3/29 ! ---- ! ! subst.c ! - fixed a problem in match_pattern_char, where `string' was checked ! for a paren following a [?+!@], rather than `pat' ! - the code that checks whether or not to exit after a failed ! ${word?msg} substitution needs to check interactive_shell rather ! than interactive to avoid exiting if such a construct appears in ! a sourced file ! ! 3/31 ! ---- ! ! bashline.c ! - add `{' to the list of characters that need to be quoted by the ! completion code when appearing in a filename ! ! 4/1 ! --- ! lib/glob/fnmatch.c ! - fixed an error in brackmatch() while skipping the rest of a bracket ! expression after a character matched. When `c' was a backslash and ! *p was a backslash, as in a pattern like [/\\], the old code didn't ! take both backslashes into account and ended up skipping the `]' ! after erroneously concluding that it was quoted. Report and fix ! from akim@epita.fr ! ! 4/3 ! --- ! lib/readline/rltty.c ! - slight change to the BSD tty interface code, so that if the first ! ioctl fails, get_tty_settings returns -1 immediately ! - better checking of ioctl return values in BSD tty version of ! get_tty_settings ! ! 4/5 ! --- ! doc/{bash.1,bashref.texi} ! - documented use of LINES and COLUMNS variables ! ! 4/12 ! ---- ! lib/readline/rltty.c ! - change the SETATTR define for the termio tty driver to use ! TCSETAW (the analog of the termios TCSADRAIN) ! ! lib/glob/fnmatch.c ! - fix for posix-style bracket expressions ([:xxx:], [=x=]) broken ! by fix of 4/1 for quotes in bracket expressions ! ! 4/26 ! ---- ! subst.c ! - fix to list_string and get_word_from_string to make a non-whitespace ! IFS character preceded by IFS whitespace part of the current field ! delimiter, not a separate delimiter that would result in a separate ! null field when splitting. cf POSIX.2, 3.6.5, (3)(b). Bug reported ! by amc@cs.berkeley.edu ! - changed the behavior of the (currently undocumented) ${!prefix@} ! expansion to be analogous to the expansion of $@ in other contexts ! when double-quoted. ksh93 seems to do this. Bug reported by ! Ken Pizzini ! - changed read_comsub to ignore NUL bytes in the command substitution ! output, printing a warning message for now ! ! parse.y ! - changed shell_getc to ignore NUL bytes in the input, printing a ! warning message for now ! - changed read_a_line to print a warning when a NUL byte is encountered, ! like shell_getc does ! ! 5/18 ! ---- ! subst.c ! - make sure split_at_delims uses d2 only if it's non-null ! - make split_at_delims skip leading newlines in the string to split, ! if newline is a delimiter ! ! jobs.c ! - prevent hanging processes by marking a child process as not running ! (even if the shell thinks it is) when waitpid() returns -1/ECHILD -- ! this indicates that waitpid never returned a reasonable status ! for that child though, which may be a symptom of another problem ! ! builtins/cd.def ! - make `pwd' print an error message if the write fails when displaying ! the current directory ! ! lib/readline/histexpand.c ! - return NULL from history_find_word if history_tokenize_internal ! returns (char **)NULL rather than attempting to dereference a ! possibly-NULL pointer ! - change history_tokenize_internal to set *indp to -1 before any ! processing if indp is non-null ! ! 5/19 ! ---- ! builtins/trap.def ! - when in POSIX.2 mode and printing trap dispositions, print the ! signal name without the leading `SIG', as POSIX.2 requires ! ! 5/23 ! ---- ! lib/readline/readline.c ! - readline_initialize_everything now assigns $TERM to rl_terminal_name ! if the application has left it unset, and calls _rl_init_terminal_io ! with the resultant value ! ! lib/readline/doc/rltech.texinfo ! - updated the description of rl_terminal_name to note initialization ! ! parse.y ! - change parse_string_to_word_list to save and restore the value of ! current_command_line_count before calling back into the parser -- ! it will screw up history if the string extends over one line. Bug ! reported by Jan.Djarv@mbox200.swipnet.se ! ! 6/7 ! --- ! unwind_prot.h ! - change unwind_protect_string to pass the address of the variable to ! unwind_protect_var on machines where ints and char *s are not the ! same size ! ! unwind_prot.c ! - make sure we save the value of a variable in unwind_protect_var on ! machines where sizeof(char *) != sizeof(int), not the contents the ! value points to. Fix from Andreas Schwab ! ! 6/8 ! --- ! configure.in ! - auto-configure MacOS X without bash malloc (like Rhapsody) ! ! 6/12 ! ---- ! configure.in ! - replace `cygwin32' with `cygwin' ! ! builtins/evalfile.c ! - in _evalfile, change all instances of \r to \n in the file to be ! sourced and evaluated if __CYGWIN__ is defined ! ! input.c ! - change \r to \n in the buffer argument to make_buffered_stream and ! after calling zread() from b_fill_buffer if __CYGWIN__ is defined ! ! 6/29 ! ---- ! lib/sh/Makefile.in ! - add rest of dependency rules for makepath.o ! ! 7/3 ! --- ! jobs.c ! - changed `int' to `WAIT' in a couple of places for non-POSIX ! environments ! ! 7/5 ! --- ! locale.c ! - try to avoid an unnecessary memory allocation in localetrans() in ! the case that a translation for the string exists ! ! lib/readline/doc/rluserman.texinfo ! - change the `direntry' information to make it use rluserman instead ! of readline ! ! 7/6 ! --- ! execute_cmd.c ! - changes to execute_in_subshell so it honors a `!' prefixing a command ! inside a user subshell (...) ! ! support/config.{guess,sub} ! - add cases for Apple Darwin (Mac OS X) ! ! configure.in ! - Apple Darwin (MacOS X) uses its own malloc ! ! lib/readline/readline.h ! - removed bogus extern declaration of savestring ! ! 7/7 ! --- ! builtins/common.c ! - in get_working_directory, don't count on getcwd returning anything ! useful in the buffer passed as the first argument on failure; just ! use bash_getcwd_errstr in the error message ! ! examples/loadables/cut.c ! - loadable version of cut(1), from the FreeBSD source tree ! ! 7/18 ! ---- ! lib/readline/vi_mode.c ! - changed two instances of (*rl_getc_function) (rl_instream) to calls ! to rl_read_key(), which works better when using the readline ! callback interface ! ! builtins/evalfile.c ! - added FEVAL_CHECKBINARY flag for _evalfile; controls whether a check ! for a binary file is performed ! - FEVAL_CHECKBINARY is not set by source_file or maybe_execute_file, ! which means that the startup file execution and the `.' builtin will ! not check for binary files ! - FEVAL_CHECKBINARY is not set by fc_execute_file, so that files ! composed of history commands run by the `fc' builtin will not check ! for binary files ! ! 7/21 ! ---- ! shell.c ! - added `--init-file' as a synonym for `--rcfile' ! ! 7/26 ! ---- ! support/shobj-conf ! - added commented-out stanzas for hpux 10 and hpux 11 when the HP ! unbundled ANSI C compiler is being used ! ! 7/27 ! ---- ! shell.c ! - don't call end_job_control() from exit_shell if subshell_environment ! is non-zero, even if the shell is interactive ! ! 8/1 ! --- ! bashhist.c ! - change maybe_add_history to remember if we saved the first line of ! a command and don't save the second and subsequent lines of a ! multi-line command if we didn't save the first line ! ! configure.in, config.h.in ! - add autoconf check for getservbyname() ! ! lib/sh/netopen.c ! - add support for named services in /dev/(tcp|udp)/host/service ! translation ! - make sure _netopen sets errno to something other than 0 if something ! goes wrong, so the redirection functions behave ! ! 8/3 ! --- ! parse.y ! - changes to shell_getc so that history saving of blank lines in ! multi-line commands does a better job of syntactic correctness ! ! bashline.c ! - bind ^O to operate-and-get-next in emacs_standard_keymap explicitly, ! rather than letting rl_add_defun do it in whatever keymap is current ! ! 8/4 ! --- ! builtins/ulimit.def ! - removed some of the special handling of RLIM_INFINITY -- the old ! code would let people use RLIM_INFINITY as a shorthand for setting ! the soft limit to the hard limit. Now, the code just passes ! RLIM_INFINITY through if the hard limit is being set, so any kernel ! errors will get through ! ! 8/10 ! ---- ! parse.y ! - change the grammar rule for group_command so that it's composed of ! a compound_list instead of a list, which requires a terminator ! This means that you can now do (legal) things like ! ! { { echo a b c ; } } ! ! since the second close brace will be recognized as such because a ! reserved word is legal in that context ! ! 8/23 ! ---- ! subst.c ! - fix parameter_brace_substring to free all memory allocated by ! get_var_and_type in the VT_ARRAYMEMBER case (returned parameter ! `val') ! ! 8/30 ! ---- ! variables.c ! - now that we have dynamic array variables, remove the check for ! array_p in bind_variable and let array variables with assignment ! functions call the assignment function ! ! subst.c ! - change cond_expand_word to perform tilde expansion (like it should ! have done all along) ! ! lib/readline/complete.c ! - don't allow backslash to quote anything inside a single-quoted ! string in find_completion_word ! ! doc/{bash.1,bashref.texi} ! - note that `set -a' will cause functions to be exported ! ! lib/readline/parens.c ! - changed the blink timeout so it's settable by the application. A ! new function, int rl_set_paren_blink_timeout (int u), (still ! undocumented) will set the timeout to U usec ! ! variables.c ! - at startup of an interactive login shell, if the current directory ! is $HOME, and $HOME and $PWD are not the same, set the current ! directory (and $PWD) to $HOME ! - break code that initializes $PWD and $OLDPWD into set_pwd function ! ! variables.h ! - new extern declaration for set_pwd() ! ! 9/6 ! --- ! lib/readline/{readline,callback}.c ! - allocate memory for rl_prompt instead of simply using what's passed ! as the `prompt' argument to readline() or ! rl_callback_handler_install(). This will allow constant strings to ! be passed to readline(), since the prompt processing code wants to ! write to rl_prompt ! ! lib/sh/pathcanon.c ! - new file, does pathname canonicalization ! ! externs.h ! - extern declarations for stuff in lib/sh/pathcanon.c ! ! general.c ! - canonicalize_pathname now simply calls sh_canonpath() ! ! 9/7 ! --- ! pcomplete.h ! - new member in a `struct compspec': options ! - define some flag values for options field ! ! pcomplib.c ! - make sure options field is allocated and copied by compspec utility ! functions ! ! builtins/complete.def ! - add struct for completion options. These control the `meta-behavior' ! of the compspec. Initially, there are three: ! ! default - perform bash default completion if programmable ! completion produces no matches ! dirnames - perform directory name completion if programmable ! completion produces no matches ! filenames - tell readline that the compspec produces filenames, ! so it can do things like append slashes to ! directory names and suppress trailing spaces ! ! - add `-o option' to complete and compgen, setting new options field ! in a compspec ! - add code to display any -o options when a compspect is printed ! with the `-p' option to complete ! ! pcomplete.c ! - programmable_completions now passes back to the caller in the last ! argument any options associated with the active compspec (from the ! options field) ! - change gen_compspec_completions to re-call gen_action_completions ! with a CA_DIRECTORY action if the rest of the compspec actions ! generate no matches and the COPT_DIRNAMES option is present ! ! bashline.c ! - if a programmable completion was specified to return filenames with ! the `-o filenames' option, set rl_filename_completion_desired to 1 ! so readline does its special filename-specific things ! - if a compspec was defined to fall back to the readline default with ! the `-o default' option, suppress setting the ! rl_attempted_completion_over variable in attempt_shell_completion ! so readline will go on and do filename completion ! ! include/ansi_stdlib.h ! - add extern declarations for atof and strtod ! ! builtins/printf.def ! - change getdouble() to use strtod (since we provide a version in ! libsh if the C library doesn't have one), and change the calling ! convention to match the other getXXX functions (take value pointer ! as argument, return success or failure). This makes printf handle ! invalid floating point numbers better ! ! doc/bash.1, lib/readline/doc/rluser.texinfo ! - documented new `-o' option to complete and compgen; described the ! arguments and their effects ! ! lib/readline/{macro,util}.c ! - renamed _rl_executing_macro to rl_executing_macro; made it public ! ! lib/readline/readline.h ! - new extern declaration for rl_executing_macro ! ! lib/readline/rltech.texinfo ! - documented rl_executing_macro ! ! 8/8 ! --- ! lib/readline/readline.c ! - new state variable, rl_readline_state ! ! lib/readline/readline.h ! - extern declaration for rl_readline_state ! - define some flag bits for rl_readline_state and macros to test and ! set them ! ! lib/readline/{readline,complete,isearch,macro,rltty,search,signals,undo,vi_mode}.c ! - added calls to the macros that set and unset various readline states ! ! lib/readline/readline.c ! - new private function, _rl_free_saved_history_line, to free up the ! history entry saved in saved_line_for_history ! ! lib/readline/search.c ! - free any saved history entry in rl_history_search_reinit(), because ! rl_get_previous_history makes a call to maybe_save_line without ! freeing up the saved line when it returns (so rl_get_next_history ! can use it) ! - fix up noninc_search_from_pos to deal with invalid history indices ! better ! ! 9/12 ! ---- ! support/shobj-conf ! - HPUX 11.0 needs the `-fpic' flag passed to the linker as well as ! the compiler ! ! execute_cmd.c ! - on MS-DOS systems, let the #! checking stuff in execute_shell_script ! treat \r as EOL (identical to \n) ! ! input.c ! - on DJGPP systems, allow buffered_getchar to ignore \r. Change ! suggested by snowball3@bigfoot.com ! ! 9/13 ! ---- ! lib/sh/tmpfile.c ! - new file, with functions for creating and (hopefully safely) opening ! temporary files for the shell ! ! externs.h ! - extern declarations for functions in tmpfile.c ! ! variables.c ! - new function, get_random_number, returns random values from the ! shell's (lame) RNG to the rest of the shell ! ! variables.h ! - new extern declaration for get_random_number() ! ! subst.c ! - changed make_named_pipe to call sh_mktmpname instead of mktemp ! ! redir.c ! - changed here_document_to_fd to call sh_mktmpfd instead of using ! inline code ! ! builtins/fc.def ! - changed fc_builtin to call sh_mktmpfp instead of using inline code ! ! builtins/common.h ! - new extern declaration for fc_execute_file() ! ! bashline.c ! - if RL_ISSTATE(RL_STATE_INITIALIZED) is 0 in initialize_readline, ! call rl_initialize to bind the defaults before setting up our ! custom shell functions and key bindings ! ! lib/readline/doc/{rluser,hsuser}.texinfo ! - some markup changes proposed by dima@chg.ru ! ! lib/readline/rlstdc.h, lib/tilde/tilde.h ! - to get ready for some `const' changes to the source, define const ! as either `__const' (gcc -traditional) or nothing if __STDC__ and ! __cplusplus are not defined ! ! lib/readline/readline.c ! - upped the default readline version to `4.2-alpha' ! ! lib/readline/readline.[ch] ! - readline now takes a `const char *' as an argument ! ! lib/readline/history.h ! - read_history(), read_history_range(), write_history(), ! append_history(), history_truncate_file() now take `const char *' ! filename arguments ! ! lib/readline/histfile.c ! - history_filename(), read_history(), read_history_range(), ! write_history(), append_history(), history_truncate_file(), ! history_do_write() now take `const char *' filename arguments ! ! lib/readline/readline.h ! - rl_read_init_file() now takes a `const char *' filename argument ! ! lib/readline/bind.c ! - current_readline_init_file is now a `const char *' ! - _rl_read_init_file(), rl_read_init_file() now take `const char *' ! filename arguments ! ! lib/tilde/tilde.c ! - tilde_expand(), tilde_expand_word() now take a `const char *' ! as their first argument ! ! lib/readline/chardefs.h ! - fixed CTRL_CHAR macro to be right on systems where chars are unsigned ! by default ! ! 9/14 ! ---- ! lib/readline/doc/{rl,hs}tech.texinfo ! - documented new `const char *' function arguments where appropriate ! ! lib/readline/vi_mode.c ! - clamp the numeric argument in vi mode at 999999, just like in emacs ! mode ! ! lib/readline/doc/rltech.texinfo ! - documented rl_readline_state and its possible bit values ! ! builtins/source.def ! - in maybe_pop_dollar_vars, don't overwrite a shell function's ! argument list even if the sourced script changes the positional ! parameters ! ! lib/readline/{util.c,rlprivate.h} ! - made _rl_strindex() and _rl_savestring() take `const char *' ! arguments ! ! 9/15 ! ---- ! subst.c ! - renamed `doing_completion' to `no_longjmp_on_fatal_error', a more ! accurate description of its current behavior ! ! pcomplete.[ch], externs.h, lib/sh/stringlist.c ! - moved the stringlist code from pcomplete.c to lib/sh/stringlist.c ! - moved the type declaration and extern function declarations from ! pcomplete.h to externs.h ! ! stringlib.c, externs.h, lib/sh/stringvec.c ! - moved the char array code from stringlib.c to lib/sh/stringvec.c ! ! 9/18 ! ---- ! subst.c ! - new static variable, expand_no_split_dollar_star, to ensure that ! $* isn't `split and rejoined' when expanded via a call to ! expand_string_unsplit or expand_word_no_split ! ! 9/19 ! ---- ! subst.[ch], execute_cmd.c ! - renamed expand_word_no_split to expand_word_unsplit ! ! copy_cmd.c ! - in copy_word, just assign w->flags to new_word->flags rather than ! bcopying the entire structure ! ! configure.in, config.h.in ! - add autoconf check for pathconf(3) ! ! lib/sh/tmpfile.c ! - test for systems with short filenames using pathconf and ! _PC_NAME_MAX, so generated temp file names don't exceed that length ! (only do this if the file name length is less than 32, since the ! current code doesn't generate filenames longer than about 17 chars) ! ! 9/20 ! ---- ! command.h ! - added `W_NOSPLIT2' word flag to prepare for supporting weird $@ ! expansion on the rhs of assignment statements (inspecting the ksh93 ! behavior, it seems like nothing except $@ is split, and $@ is split ! on $IFS and rejoined as a single string) ! ! 9/21 ! ---- ! subst.c ! - since verify_substring_values looks for arithmetic expressions ! bounded by `:', do some ad-hoc parsing of the substring passed as ! the argument to avoid cutting the expression off at the wrong `:' ! (since the inclusion of conditional expressions, expressions may ! contain a `:'). Do some paren balancing, too. ! ! 9/22 ! ---- ! command.h ! - new #define, CLOBBERING_REDIRECT, evaluates to true for any redirect ! that will clobber a file and should be subject to `noclobber' ! ! redir.c ! - changed redir_open to use CLOBBERING_REDIRECT instead of ! OUTPUT_REDIRECT. This means that <> no longer tests the value of ! noclobber, as POSIX.2 specifies ! ! parse.y ! - made a change to cond_term so that expressions like [[ (x) ]] are ! parsed correctly ! ! 9/25 ! ---- ! parse.y ! - small change to grammar for arith_for_command and special_case_tokens ! to allow `do...done' or {...} after ((...)) without an intervening ! list_terminator (for ksh93 compatibility) ! ! builtins/printf.def ! - `printf' now treats \E and \e the same when performing backslash ! escape expansion for the %b format character for compatibility with ! $'...' quoting (for ksh93 compatibility) ! ! 9/26 ! ---- ! builtins/source.def ! - new variable, source_searches_cwd, initially 1. If non-zero, `.' ! searches $PWD for the filename argument if it's not found in $PATH ! ! general.c ! - changed posix_initialize to turn off source_searches_cwd if posix ! mode is being enabled; turn it on if posix mode is being disabled ! - changed things so interactive_comments is not turned off if posix ! mode is disabled, since that's rarely what is desired ! ! variables.c ! - changed uidset() to set UID and EUID only if they are not already ! set when the shell starts up ! - changed things to HOSTNAME is set only if it's not set when the ! shell starts up ! ! execute_cmd.c ! - changed execute_builtin_or_function so that if a command like ! `command exec 4 as appropriate ! ! lib/readline/{display.c,readline.h} ! - rl_redisplay_func is now of type rl_voidfunc_t * ! ! lib/readline/{callbacks.c,readline.h} ! - the `linefunc' argument to rl_callback_handler_install and the ! rl_linefunc variable are now of type rl_vcpfunc_t * ! ! lib/readline/{complete.c,readline.h} ! - rl_completion_display_matches_hook is now of type ! rl_compdisplay_func_t * ! - rl_directory_completion_hook is now of type rl_icppfunc_t * ! ! lib/readline/{history.h,histexpand.c} ! - history_inhibit_expansion_function is now of type ! rl_linebuf_func_t * ! ! lib/readline/histexpand.c ! - new private type, _hist_search_func_t, used to indirect through ! the various history search functions ! ! lib/tilde/tilde.h ! - new typedef, tilde_hook_func_t, which takes a char * and returns ! a char * ! ! lib/tilde/tilde.[ch] ! - tilde_expansion_preexpansion_hook and tilde_expansion_failure_hook ! are now of type tilde_hook_func_t * ! ! [THERE ARE NO LONGER ANY REFERENCES TO Function *, CPFunction *, or ! CPPFunction * IN THE READLINE SOURCE, WHICH INCLUDES THE TILDE LIBRARY] ! ! {bashline,bracecomp}.c, bashline.h ! - changes for changed type of rl_completion_entry_func and other ! changed types (rl_compentry_func_t, rl_completion_func_t, ! const changes for prototypes, etc.) ! ! pathexp.[ch] ! - shell_glob_filename now takes a `const char *' argument ! - quote_string_for_globbing now takes a `const char *' argument ! ! 10/31 ! ----- ! lib/sh/zwrite.c ! - fix zwrite() to update the buffer pointer in the case of a ! partial write, in addition to decreasing the count of bytes to ! be written ! ! support/config.{guess,sub} ! - added entries for MIPS-based Compaq machines running NonStopUX ! ! 11/1 ! ---- ! lib/readline/undo.c ! - renamed free_undo_list to be rl_free_undo_list, made a dummy ! replacement function free_undo_list that just calls ! rl_free_undo_list ! ! lib/readline/readline.h ! - extern declaration for rl_free_undo_list ! ! lib/readline/{readline,signals}.c ! - changed calls to free_undo_list to rl_free_undo_list ! ! lib/readline/doc/rltech.texinfo ! - changed all function types and arguments for new typedefs ! ! 11/2 ! ---- ! lib/readline/{rlprivate.h,terminal.c,display.c} ! - term_clreol, term_clrpag, term_cr, term_backspace, term_goto, ! term_pc, term_im, term_ei, term_ic, term_ip, term_IC, term_dc, ! term_DC, term_forward_char, term_up, term_mm, term_mo, term_ku, ! term_kd, term_kr, term_kl, term_ks, term_ke, term_kh, term_kH, ! terminal_can_insert variables all now have a _rl_ prefix ! ! lib/readline/{rlprivate.h,terminal.c,display.c, readline.c} ! - screenheight, screenwidth, screenchars now have an _rl_ prefix ! ! lib/readline/{terminal,complete,isearch,kill,macro,readline,search,undo,util,vi_mode}.c ! - changed calls to ding to calls to rl_ding ! ! lib/readine/{isearch,readline,search}.c ! - saved_line_for_history now has an _rl_ prefix ! ! lib/readline/readline.[ch] ! - renamed maybe_{replace,save,unsave} line to have an rl_ prefix ! ! lib/readline/{readline,search,isearch}.c ! - changed calls to maybe_{replace,save,unsave} line to call the ! rl_-prefixed equivalents ! ! lib/readline/{rlprivate.h,readline.c,util.c} ! - renamed alphabetic to rl_alphabetic; changed calls ! ! lib/readline/{bind.c,funmap.c,rlprivate.h} ! - possible_control_prefixes -> _rl_possible_control_prefixes ! - possible_meta_prefixes -> _rl_possible_meta_prefixes ! ! lib/readline/compat.c ! - new file for entry points for backwards compatibility functions ! - moved free_undo_list here from undo.c ! - maybe_{replace,save,unsave}_line function that call their rl_ ! counterparts ! - moved ding() here; it just calls rl_ding() ! - moved alphabetic here; it just calls _rl_alphabetic() ! ! lib/readline/Makefile.in ! - make sure compat.o is built and linked appropriately ! ! bashline.c,pcomplete.c ! - changed calls to ding() to call rl_ding() ! ! support/shobj-conf ! - changed linux stanza SHLIB_XLDFLAGS to make the `soname' in a ! shared library have only the major version number, rather than ! major and minor numbers ! - made analogous changes for bsd/os-4 ! - changed freebsd 3.x stanza to match `freebsdelf[3-9]*' for ! FreeBSD elf systems and `freebsdaout[3-9]*' for FreeBSD ! a.out systems (are there any?) ! ! lib/readline/doc/{rluser,hsuser}.texinfo ! - changed uses of @samp to @option where appropriate ! ! doc/bashref.texi ! - changed uses of @samp to @option where appropriate ! ! 11/3 ! ---- ! lib/readline/{readline.h,complete.c,compat.c} ! - completion_matches, username_completion_function, ! filename_completion_function all have an rl_ prefix ! ! {bashline,bracecomp,pcomplete}.c ! - changed calls to completion_matches, username_completion_function, ! and filename_completion_function ! ! lib/sh/shquote.c ! - single_quote, double_quote, un_double_quote, backslash_quote, ! backslash_quote_for_double_quotes, contains_shell_metas all now ! have an sh_ prefix ! ! externs.h ! - changed extern declarations for functions from shquote.c ! ! {array,bashline,pcomplete,print_cmd,variables}.c, parse.y ! builtins/{alias,complete,trap,type}.def ! - changed callers of single_quote ! ! {array,bashline}.c, builtins/setattr.def ! - changed callers of double_quote ! ! {bashline,bracecomp}.c, parse.y, builtins/printf.def ! - changed callers of backslash_quote ! ! parse.y ! - changed callers of backslash_quote_for_double_quotes ! ! {print_cmd,variables}.c ! - changed callers of contains_shell_metas ! ! lib/readline/{rlshell.h,shell.c,histexpand.c} ! - single_quote -> sh_single_quote ! ! lib/readline/{rlshell.h,shell.c,input.c} ! general.[ch],shell.c,subst.c ! - unset_nodelay_mode -> sh_unset_nodelay_mode ! ! lib/readline/{rlshell.h,shell.c}, lib/tilde/tilde.c, variables.c ! - get_home_dir -> sh_get_home_dir ! ! lib/readline/rlshell.h,lib/readline/bind,histfile,nls,readline,shell,terminal}.c, lib/tilde/tilde.c, variables.c ! - get_env_value -> sh_get_env_value ! ! lib/readline/rlshell.h,lib/readline/{shell,terminal}.c ! variables.h,{jobs,nojobs,variables}.c ! - set_lines_and_columns -> sh_set_lines_and_columns ! ! 11/6 ! ---- ! configure.in ! - bash can only link with an already-installed readline library whose ! version is 4.2 or greater ! ! variables.h ! - new variable attribiute, noassign, with its accompanying test macro, ! noassign_p. Completely internal, not user-settable ! ! execute_cmd.c ! - treat noassign variables like readonly variables, except an attempt ! to assign to them does not cause a non-interactive shell in POSIX ! mode to abort ! ! {subst,variables}.c,builtins/declare.def ! - attempts to assign to `noassign' variables return an error status, ! but no error messages -- almost identical to readonly variables ! ! variables.c ! - GROUPS and FUNCNAME are `noassign' variables, meaning assignment to ! them is disallowed, but that they may be unset (in which case they ! lose their special properties) ! ! doc/{bash.1,bashref.texi} ! - documented that assignments to GROUPS and FUNCNAME are disallowed ! and return an error status ! ! 11/8 ! ---- ! lib/readline/{funmap.c,bind.c,rlprivate.h} ! - _rl_possible_{control,meta}_prefixes are now arrays of `const char *' ! and are defined in bind.c, since that's where they're used ! ! lib/readline/rltty.c ! - changed prepare_terminal_settings to take an `oldtio' argument ! instead of `otio', which shadows the global declaration ! ! lib/readline/bind.c ! - the `name' member of a parser_directive element is now a ! `const char *' ! - the `name' member of a boolean_varlist element is now a ! `const char *' ! - the `name' member of a string_varlist element is now a ! `const char *' ! - the `name' member of an assoc_list element is now a ! `const char *' ! - the `name' member of an keymap_names element is now a ! `const char *' ! ! lib/readline/display.c ! - changed scope-local char * variable `temp' to `vtemp' because ! there's already a function local variable named `temp' of a ! different type (int) in rl_redisplay ! ! lib/readline/util.c ! - pathname_alphabetic_chars is now `const char *' ! ! lib/readline/terminal.c ! - the `tc_var' member of a _tc_string element is now a ! `const char *' ! ! lib/readline/histexpand.c ! - changed history_expand_internal to remove the duplicate local ! declaration of `t' in the `s'/`&' case ! ! lib/readline/histfile.c ! - in history_filename, `home' is now a `const char *' ! ! lib/tilde/tilde.c ! - default_prefixes and default_suffixes are now arrays of ! `const char *' ! ! lib/readline/vi_mode.c ! - vi_motion and vi_texmod are now `const char *' ! ! lib/readline/complete.c ! - simplified the conditional declaration of getpwent() ! ! variables.[ch] ! - get_string_value now takes a `const char *' argument ! ! 11/10 ! ----- ! display.c ! - changes to expand_prompt and rl_redisplay to keep track of the number ! of invisible characters on the first line of the prompt, in case it ! takes up more than one physical line, and not all invisible chars are ! on the first line ! - the code that determines the index into the line at which to wrap the ! first line if the visible prompt length exceeds the screen width was ! changed to use the number of invisible chars in the first physical ! prompt line rather than the total number of invisible characters ! - changed redraw_prompt to save and restore prompt_invis_chars_first_line ! ! subst.c ! - changed expand_string_internal to savestring() the string argument ! to avoid possible doubly-freed memory on substitution errors ! - fixed expand_word_list_internal so that commands with assignment ! statements preceding words that expand to nothing return a failure ! status if one of the assignments fails; for example ! ! readonly TVAR ! TVAR=7 $ECHO $ABCDE ! - made sure that all cases of jump_to_top_level set ! last_command_exit_value to something non-zero before jumping, since ! they are by definition errors ! ! builtins/evalstring.c ! - changed parse_and_execute to set last_result to EXECUTION_FAILURE ! along with last_command_exit_value in the `DISPOSE' case of a ! jump_to_top_level, since we can return this value in most ! (interactive) circumstances ! ! 11/14 ! ----- ! general.c ! - fix legal_number so that it skips any trailing whitespace in its ! string argument after strtol returns, since strtol does not ! ! lib/readline/{complete.c,readline.h} ! - new function pointer, rl_directory_rewrite_hook, identical in effect ! to rl_directory_completion_hook except that it does not modify what ! is displayed when the possible completions are listed or inserted ! ! bashline.c ! - changed tcsh_magic_space to try and insert a space closer to where ! the point was originally, rather than always inserting it at the ! end of the line ! ! 11/16 ! ----- ! jobs.c ! - fixed a bug that happened on cygwin systems that caused the jobs ! table to fill up if a file sourced from an interactive shell ran ! lots of jobs -- notify_and_cleanup() never called notify_of_job_status ! ! subst.c ! - fixed pat_match to avoid infinite recursion on zero-length matches ! from match_pattern ! ! 11/17/2000 ! ---------- ! [bash-2.05-alpha1 released] ! ! 11/18 ! ----- ! support/shobj-conf ! - added GNU Hurd support, identical to linux ! ! variables.c ! - cygwin systems don't use the exportstr stuff at all, so call ! INVALIDATE_EXPORTSTR before testing var->exportstr, since just ! blindly using the value_cell will break exported functions that ! already have an exportstr set ! - when recomputing the exported value because valid_exportstr fails, ! make sure to call named_function_string if the variable is a shell ! function ! ! 11/20 ! ----- ! variables.c ! - removed call to valid_exportstr; the exportstr code has been ! adequately debugged ! ! lib/glob/fnmatch.c ! - reverted to the POSIX.2 behavior of using the current locale and ! strcoll() to evaluate range expressions in bracket expressions ! ! doc/{bash.1,bashref.texi} ! - added note to Pattern Matching section emphasizing that the current ! locale plays a part in evaluating range expressions within [...] ! ! aclocal.m4 ! - added an #include to the test for posix sigaction ! restarting interrupted system calls ! ! support/config.guess ! - changes from Tim Mooney to support `letter version' releases of ! Tru 64 Unix on the Alpha (e.g., 5.1a) ! ! 11/21 ! ----- ! lib/sh/pathphys.c ! - make sure MAXSYMLINKS is defined ! ! aclocal.m4 ! - changed BASH_CHECK_PWFUNCS to just use AC_EGREP_CPP on a file ! that includes pwd.h and other header files, checking for getpwuid. ! It #defines HAVE_GETPW_DECLS if the egrep succeeds ! ! lib/readline/complete.c ! - provide extern declaration of getpwent if _POSIX_SOURCE is defined, ! since most systems don't declare it in unless _POSIX_SOURCE ! is undefined ! ! 11/22 ! ----- ! input.c ! - fixed a small typo in the cygwin-specific code ! ! doc/{bashref.texi,bash.1} ! - added some more explanatory text about the effect of the current ! locale's collating order on range expressions within bracket ! expressions ! ! doc/bashref.texi, lib/readline/doc/{rltech,rluser,hstech}.texinfo ! - changed to use @env instead of @code for the names of environment ! and shell variables in text (not in tables yet) ! ! 11/27 ! ----- ! configure.in ! - configure without the bash malloc on Interix ! ! lib/readline/doc/rltech.texinfo ! - changed completion_matches() to rl_completion_matches() ! - changed filename_completion_function() to ! rl_filename_completion_function() ! - changed username_completion_function() to ! rl_username_completion_function() ! ! lib/readline/rlprivate.h ! - changed declaration of _rl_alphabetic to rl_alphabetic, since that's ! what's used in the C files ! ! support/bashbug.sh ! - Debian has /usr/bin/editor as a link to the system default editor; ! make that one of the alternatives if $EDITOR is not set ! - if the OS provides mktemp(1) or tempfile(1), use those to create ! the temp file for the bug report ! ! lib/readline/{readline.[ch], callback.c} ! - new function, rl_set_prompt, called with prompt string as argument, ! sets and, if necessary, expands rl_prompt ! ! lib/readline/{complete.c,compat.c,readline.h} ! - rl_completion_matches now takes a `const char *' as its first ! argument ! - compute_lcd_of_matches now takes a `const char *' as its third ! argument ! ! lib/readline/rltypedefs.h ! - a rl_completion_func_t now takes a `const char *' as its first ! argument ! ! lib/readline/Makefile.in ! - added dependencies on rltypedefs.h ! ! bashline.c ! - attempt_shell_completion now takes a `const char *' as its first ! argument ! - removed bogus cast when assigning to rl_attempted_completion_function ! and rl_completion_entry_function ! - bash_directory_completion_matches takes a `const char *' argument ! ! pcomplete.c ! - gen_matches_from_itemlist, pcomp_filename_completion_function, ! gen_action_completions, gen_globpat_matches, gen_wordlist_matches, ! gen_compspec_completions now take `const char *' arguments as ! appropriate ! - programmable_completions now takes `const char *' first and ! second arguments ! ! pcomplib.c ! - find_compspec now takes a `const char *' argument ! ! 11/29 ----- - shell.c - - in open_shell_script, if we have /dev/fd, don't perform the check - for a binary file if isatty(fd) (where fd is opened on the script - name) returns non-zero - - in open_shell_script, don't call init_noninteractive again, since it - can undo changes made by the startup files ($BASH_ENV) ! input.c ! - in fd_to_buffered_stream, make sure buffer size (and hence size ! arg passed to read(2)) is greater than zero. This makes ! bash /dev/stdin work right. ! - return -1 from sync_buffered_stream immediately if buffers is NULL ! (can happen when running `bash -i /dev/stdin' and executing a ! command that requires a fork) ! 11/30 ----- ! jobs.c ! - renamed cont_signal_handler to sigcont_sighandler for consistency ! - renamed stop_signal_handler to sigstop_sighandler for consistency ! - if there is no jobs list or no outstanding jobs, return immediately ! from notify_of_job_status, before fussing with the signal state ! - change map_over_jobs to not fuss with the signal state unless there ! are jobs ! ! lib/malloc/malloc.c ! - encapsulated the code to block and unblock signals during morecore() ! execution into two functions: block_signals and unblock_signals ! - only block signals in morecore() if interrupt_immediately is non-zero ! or SIGINT or SIGCHLD is trapped ! 12/1 ! ---- ! lib/readline/readline.c ! - fix to rl_forward to make sure that lend doesn't get set < 0, since ! that will result in rl_point being < 0 ! 12/5 ! ---- ! parse.y ! - fix to parse_matched_pair to allow backslash to escape a ' inside a ! $'...' construct inside another grouping construct like ${...} ! - translate $'...' and $"..." in parse_matched_pair, because nothing ! else will do it if such a construct appears inside a grouping ! construct ! 12/6 ! ---- ! configure.in ! - make sure all bracket tests for pattern matching in case statements ! are appropriately quoted, so autoconf doesn't swallow the brackets ! - add -rdynamic to LOCAL_LDFLAGS for freebsd-4.x ! examples/loadables/realpath.c ! - new loadable builtin, canonicalizes pathnames and expands symlinks ! builtins/ulimit.def ! - added undocumented -w option for setting RLIMIT_SWAP, if it's defined ! 12/7 ! ---- ! bashline.c ! - reordered code in initialize_readline so all of the rl_add_defun ! calls are made before the call to rl_initialize, and all of the ! rl_{bind,unbind}_key_in_map calls are made after initializing ! readline. This allows the bash-specific function names to be used ! in ~/.inputrc ! 12/12 ! ----- ! lib/readline/callback.c ! - in rl_callback_read_char, loop after returning from ! readline_internal_char and test rl_pending_input in case some ! function (like the incremental search functions and digit argument ! functions) pushed input back with rl_execute_next ! lib/readline/readline.h ! - new rl_state flag: RL_STATE_INPUTPENDING, indicating that ! rl_execute_next has pushed input back for rl_get_key to read ! lib/readline/input.c ! - new function to clear rl_pending_input: rl_clear_pending_input() ! lib/readline/{input,readline,signals}.c ! - when rl_pending_input is set, set state RL_STATE_INPUTPENDING; ! unset that state when rl_read_key returns the pending input ! - call rl_clear_pending_input at appropriate points ! 12/15 ! ----- ! lib/readline/histfile.c ! - don't leak file descriptors while attempting to truncate a non-regular ! file ! input.c ! - make sure check_bash_input sets the close-on-exec flag for the file ! descriptor used to save the bash input fd ! parse.y ! - if default_buffered_input gets changed while it's on the saved ! stream stack, make sure it gets set to close-on-exec when it's ! restored by pop_stream() ! 12/18 ! ----- ! builtins/ulimit.def ! - change set_limit to account for Cygwin's setdtablesize() being ! declared as a void function ! support/config.{guess,sub} ! - change cygwin32 to cygwin ! 12/20 ----- ! nojobs.c ! - make wait_sigint_handler handle the case of interrupt_immediately ! being non-zero when it's called, and jump out appropriately ! ! jobs.c ! - new function to run sigchld traps: run_sigchld_trap(); called from ! waitchld ! - broke the code that computes the printable job status messages for ! pretty_print_job out into a separate function ! - rearranged some code eliminating a useless `else' branch in wait_for ! - shell_tty_info is now a TTYSTRUCT, using defines from shtty.h ! - broke the code that sets a job's status after waitpid says its state ! has changed and cleans up after a received SIGINT out into a separate ! function: set_job_status_and_cleanup ! - last_stopped_job() -> job_last_stopped() to avoid collision with a ! variable name ! - last_running_job() -> job_last_running() for consistency ! 12/21 ! ----- ! variables.c ! - new function, print_func_list (SHELL_VAR **list); prints shell ! functions from list in a form that may be re-used as input to ! redefine the functions ! variables.h ! - new extern declaration for print_func_list ! builtins/set.def ! - set without options now calls print_func_list to have functions ! printed in a way that can be reused as input (this affects ! `declare' and `declare -p' also) ! 12/27 ! ----- ! general.h ! - add an ISOCTAL define ! builtins/common.h ! - use ISOCTAL in read_octal function ! parse.y ! - in decode_prompt_string, don't just skip STRING forward by 3 if an ! octal sequence is translated; handle sequences of fewer than three ! characters by checking each character ! 12/28 ----- doc/{bash.1,bashref.texi} ! - make sure `vi-move' is a documented keymap argument to bind's ! `-m' option ! 12/29 ! ----- ! variables.c ! - change print_assignment so that functions are printed in a way that ! may be reused as input (without the `=') ! ! 1/2/2001 ! -------- ! test.c ! - fix test_command to print an error message if `[' is supplied a ! single argument that is not `]' ! support/shobj-conf ! - change test of $SHOBJ_CC from `gcc*' to `*gcc*' to handle full ! pathnames ! 1/11 ---- ! execute_cmd.c ! - in initialize_subshell, zero out builtin_env, since those aren't ! supposed to be exported ! variables.c ! - new function: shell_var_from_env_string, creates a SHELL_VAR from ! a `name=value' style environment string and returns it ! - new function: bind_name_in_env_array(name, value, array), makes ! NAME have VALUE in ARRAY, a temporary environment ! - new function: bind_tempenv_variable (name, value), makes NAME have ! VALUE in one of the temporary environments -- temporary_env, ! builtin_env, or function_env ! - changed bind_variable to call bind_tempenv_variable if one of the ! temporary environments is non-null before modifying the ! shell_variables table. This fixes a problem with sourced scripts ! modifying variables in a temporary environment, but not seeing the ! updated values ! 1/12 ! ---- ! variables.c ! - changed things so OSTYPE, HOSTTYPE, and MACHTYPE are set only if ! they don't have a value at shell startup ! 1/17 ! ---- ! builtins/fc.def ! - create temp file with MT_USETMPDIR variables.c ! - allow function local readonly variables to overwrite (or shadow) ! other (calling) function readonly variables, but not global ! readonly ones ! ! builtins/wait.def ! - replace unwind_protect of interrupt_immediately, since that's a ! variable that you cannot unwind-protect (the unwind-protect code ! uses it) ! 1/22 ---- - Makefile.in - - changed RELSTATUS to `beta1' - - lib/readline/terminal.c - - added rl_set_screen_size function, wrapper around - _rl_set_screen_size so bash doesn't call _rl_ functions - - lib/readline/{rlprivate,readline}.h - - moved rl_explicit_arg to readline.h - - moved rl_numeric_arg to readline.h - - moved rl_editing_mode to readline.h - - moved rl_last_func to readline.h - - added rl_set_screen_size to readline.h - - lib/readline/doc/rltech.texinfo - - documented rl_explicit_arg, rl_editing_mode, rl_numeric_arg, - rl_last_func - - documented rl_set_screen_size - - {jobs,nojobs}.c - - _rl_set_screen_size -> rl_set_screen_size - - {bashline,pcomplete}.c, builtins/set.def - - removed extern declarations of variables defined in readline.h - - 1/23 - ---- - support/rlvers.sh - - use $TMPDIR if it's defined - - use $RL_INCDIR (set by -I option, /usr/local/include by default) - as the directory containing the installed readline header files - - cd to the temp directory before attempting compilation - configure.in ! - pass `-I ${includedir}' to rlvers.sh ! ! 1/29 ! ---- ! subst.c ! - fixed parameter_brace_expand to only throw away the state of ! quoted dollar-at if we're going to be using the rhs of the ! brace expansion, since whatever parameter_brace_expand_rhs sets ! should be what goes (corrects bad fix of 2/16/2000) ! - fixed param_expand to only free temp after calling ! parameter_brace_expand if it's a quoted null and we *did not* ! have a quoted $@, since in that case we want to keep it and ! do the $@ special handling (fixes real problem from 2/16/2000) ! ! 1/30 ! ---- ! variables.c ! - remove export attribute from SSH2_CLIENT, like SSH_CLIENT ! ! 2/1 ! --- ! unwind_prot.c ! - added new function, clear_unwind_protect_list, to zero out the ! unwind_protect list, optionally freeing the elements ! ! unwind_prot.h ! - new extern declaration for clear_unwind_protect_list ! ! execute_cmd.c ! - call clear_unwind_protect_list in initialize_subshell. This fixes ! the problem of core dumps when calling a shell script without a ! leading `#!' from a shell function or other context with an ! unwind-protect list ! - set variable_context and return_catch_flag to 0 in ! initialize_subshell, since a new subshell is no longer in a shell ! function ! ! 2/2 ! --- ! doc/readline.3 ! - updated the text; clarified several points ! - changed the usage synopsis to include and ! ! ! lib/readline/doc/hstech.texinfo ! - made sure all function prototypes are valid ANSI C (mostly ! changing () to (void)) ! ! lib/readline/doc/rluser.texinfo ! - a few clarifications ! ! lib/readline/doc/rltech.texinfo ! - a few clarifications ! - added two new subsections for character input and terminal ! management ! - changed all function prototypes to be valid ANSI C (mostly ! replacing () with (void)) ! - documented some variables in readline.h but previously not in ! the reference manual (rl_num_chars_to_read, rl_dispatching, ! rl_gnu_readline_p, rl_completion_type) ! - documented some functions in readline.h but previously not in ! the reference manual (rl_clear_pending_input, rl_prep_terminal, ! rl_deprep_terminal, rl_tty_set_default_bindings, rl_alphabetic, ! rl_crlf) ! ! lib/readline/readline.h ! - added extern declaration for rl_clear_pending_input() ! - added extern declaration for rl_alphabetic ! - changed rltty_set_default_bindings to rl_tty_set_default_bindings ! - changed crlf() -> rl_crlf() ! ! lib/readline/rltty.c ! - new function, rl_tty_set_default_bindings, just calls ! rltty_set_default_bindings (needed `rl_' prefix) ! ! lib/readline/readline.c ! - readline_default_bindings now calls rl_tty_set_default_bindings ! ! lib/readline/terminal.c ! - renamed crlf() to rl_crlf(); crlf() is still defined for backwards ! compatibility ! ! bashline.c, lib/readline/{complete,display}.c ! - changed all calls to crlf() to rl_crlf() ! ! test.c ! - fix filecomp() so that `test file1 -nt file2' doesn't fail if file1 ! exists but file2 does not ! ! 2/5 ! --- ! lib/readline/{terminal,compat}.c ! - move crlf() backwards-compatibility definition to compat.c ! ! execute_cmd.c ! - if we're running a command `( command ) &' from a non-interactive ! shell, don't unconditionally disable expand_aliases. Only do it ! when running such a command from an interactive shell, since then ! we're changing to a non-interactive shell ! ! 2/6 ! --- ! [bash-2.05-beta1 released] ! ! lib/readline/compat.c ! - add extern declaration for rl_crlf() ! ! lib/readline/undo.c ! - initialize start and end in rl_do_undo to avoid bogus gcc compiler ! warning with -Wall ! lib/readline/rlprivate.h ! - fix typo in extern declaration of _rl_current_display_line() ! - add extern declaration of _rl_free_saved_history_line() ! ! lib/readline/terminal.c ! - return immediately from _rl_set_screen_size if one of the args is 0 ! - new function, rl_get_screen_size (int *rows, int *cols) to return ! readline's idea of the screen dimensions ! ! lib/readline/doc/rltech.texinfo ! - documented rl_get_screen_size ! ! 2/7 ! --- ! pathexp.c ! - a couple of fixes for the POSIX_GLOB_LIBRARY version of the globbing ! code ! ! expr.c ! - fixed omission of ^= from the special assignment operators ! ! shell.c ! - change logic for setting `posixly_correct' at shell startup: if ! $POSIXLY_CORRECT or $POSIX_PEDANTIC is found in the environment, ! set it to 1, otherwise retain the previous value (which is ! initialized to 0) ! ! 2/10 ! ---- ! builtins/evalstring.c ! - since subshell_environment is now a flags word, test for the ! SUBSHELL_COMSUB bit being set when decided whether or not to ! evaluate $(flag: B_WASBASHINPUT ! ! redir.c ! - in add_undo_redirect, if FD is 0, make the undo redirect be of type ! r_duplicating_input instead of r_duplicating_output, since that fd ! requires special handling in the presence of buffered streams (fixes ! problem with scripts reading input through a pipe restoring bash ! input buffered stream correctly after a `read' with an input ! redirection ! ! 2/14 ! ---- ! lib/readline{complete,util}.c ! - moved rl_strpbrk to util.c with rest of string utility functions, ! renamed to _rl_strpbrk ! ! lib/readline/rlprivate.h ! - extern declaration for _rl_strpbrk ! ! lib/readline/input.c ! - make the timeout in rl_gather_tyi() be a variable ! (_keyboard_input_timeout) rather than a constant ! - new function, rl_set_keyboard_input_timeout (int u) to set ! _keyboard_input_timeout. The argument is in microseconds; returns ! the old value of _keyboard_input_timeout ! - _rl_input_available uses _keyboard_input_timeout also ! ! lib/readline/readline.h ! - extern declaration for rl_set_keyboard_input_timeout ! ! lib/readline/doc/rltech.texinfo ! - documented rl_variable_bind(), rl_macro_bind(), rl_macro_dumper(), ! rl_variable_dumper(), rl_push_macro_input(), rl_show_char() ! ! 2/20 ! ---- ! findcmd.c ! - new function, executable_or_directory(name), returns 1 if NAME is ! an executable file or a directory ! ! findcmd.h ! - extern declaration for executable_or_directory() ! ! bashline.c ! - call executable_or_directory() from command_word_completion_function, ! which requires a single stat(2), instead of executable_file() and ! is_directory(), each of which requires a stat(2) ! ! 2/21 ---- ! execute_cmd.c ! - changed execute_builtin to handle `return' with a preceding variable ! assignment list specially when in POSIX mode. POSIX says that the ! variable assignments should persist after the builtin returns, since ! `return' is a special builtin. Since `return' does a longjmp and ! doesn't go through the normal cleanup path, we need to do special ! things ! ! variables.c ! - new function, merge_function_env(), merges the function_env into ! the shell_variables table ! ! variables.h ! - extern declaration for merge_function_env() ! ! execute_cmd.c ! - changed execute_function to merge any variable assignments preceding ! the function call into shell_variables if the shell is running in ! POSIX mode ! ! subst.c ! - changed parameter_brace_expand_error to do tilde expansion on the ! rhs of the expansion, if it's not null ! - changed command_substitute so that the subshell begun to execute ! the command substitution inherits the setting of the `-e' option ! when in POSIX mode ! ! builtins/break.def ! - changed check_loop_level to not print a complaining message when ! the shell is running in POSIX mode, even if BREAK_COMPLAINS is ! defined. This affects `break' and `continue' ! - changed `break' and `continue' to return success even if the shell ! is not executing a loop, as POSIX specifies ! ! builtins/set.def ! - changed reset_shell_options() to not clear posixly_correct, so ! subshells spawned to execute shell scripts without a leading `#!' ! inherit posix mode from their parent shell variables.c ! - changed make_new_variable to create the shell_variables hash table ! if it hasn't been done yet. This is needed because bind_variable ! may be called before initialize_shell_variables (e.g., when ! `bash -o posix' calls bind_variable("POSIXLY_CORRECT", "y") from ! parse_shell_options -> set_minus_o_option -> set_posix_mode ! This makes `bash --posix' and `bash -o posix' equivalent, as they ! should always have been ! - changed maybe_make_export_env to merge the contents of `builtin_env' ! into export_env after function_env and before temporary_env. This ! fixes the problems with variable assignments preceding `eval' or ! `source' not making it into the environment passed to executed disk ! commands (var=20 eval printenv var) ! ! doc/bashref.texi ! - noted that variable assignments preceding shell function calls ! persist in the shell environment after the function returns when ! the shell is running in POSIX mode ! - noted that when the shell is running in POSIX mode, subshells ! spawned to execute command substitutions inherit the value of ! the `-e' option from the parent shell ! ! 2/26 ! ---- ! doc/bashref.texi ! - augmented description of bash non-posix behavior in posix mode ! with information from running the vsc-lite test suite ! ! 2/28 ! ---- ! general.c ! - since POSIX.2 says that aliases should be expanded even in ! non-interactive shells, enable alias expansion in ! posix_initialize() when posix mode is enabled, and set it to the ! value of interactive_shell if posix mode is disabled ! ! shell.c ! - before running the startup scripts, set expand_aliases to ! posixly_correct, since we don't want alias expansion in startup ! files unless we've been given the --posix invocation option ! ! doc/bashref.texi ! - added item in BASH Posix Mode section noting that alias expansion ! is always enabled when in posix mode - Makefile.in - - changed release level to `beta2' - - 3/1 - --- jobs.c ! - expanded retcode_name_buffer to 64 ! - changed printable_job_status to conform to posix.2 for text of ! stopped job status: `Stopped(SIGTSTP)' or `Stopped(SIGSTOP)' ! ! doc/bashref.texi ! - Noted above change in posix mode section ! ! 3/5 ! --- ! lib/readline/bind.c ! - changed rl_get_keymap_by_name to work case-insensitively ! ! 3/6 ! --- ! doc/readline.{0,3,ps} ! - removed from distribution; moved to readline distribution ! ! lib/readline/doc/history.3 ! - man page for history library; neither built nor installed ! (part of the standalone readline distribution) ! ! lib/readline/histfile.c ! - changed history_truncate_file to return 0 on success, errno ! on failure ! - changed history_do_write to return errno on a write error. This ! affects write_history and append_history ! ! lib/readline/history.c ! - max_input_history is now history_max_entries; the old variable is ! maintained for backwards compatibility ! ! lib/readline/histexpand.c ! - the list of delimiters that separate words for history_tokenize ! is now a variable: history_word_delimiters; default value is as ! before ! - changed history_expand to return 0 immediately if its second ! argument is NULL ! ! bashline.c ! - changed to use history_max_entries ! lib/readline/history.h ! - extern declaration for history_max_entries ! - extern declaration for history_word_delimiters ! ! 3/8 ! --- ! test.c ! - changed unary_operator() to return FALSE for non-numeric arguments ! to `-t' ! ! 3/9 ! --- ! [bash-2.05-beta2 released] ! ! 3/12 ! ---- ! lib/readline/doc/rltech.texinfo ! - documented rl_set_paren_blink_timeout() ! - moved the example function to its own info node ! ! lib/readline/{hstech.texinfo,history.3} ! - `$' is not in the default value of history_word_delimiters - 3/13 - ---- bashline.c ! - in maybe_add_history, if the tests for HISTCONTROL succeed, but ! the HISTIGNORE check fails, set first_line_saved to 0 ! ! 3/15 ! ---- ! ! lib/glob/fnmatch.c ! - fixed a bug in patscan that caused `[' to be treated as special ! even inside a nested bracket expression. It's supposed to lose ! it's special handling inside [] ! - fixed a bug in patscan that caused `]' to end an embedded bracket ! expression even if it was the first character after the `[' (or ! a leading `!' or `^') ! ! 3/22 ! ---- ! execute_cmd.c ! - made a small change to shell_execve to report a more user-friendly ! error if execve(2) fails because of a `#! interpreter' error with ! `interpreter' ! - in shell_execve, if HAVE_HASH_BANG_EXEC is not defined, make sure ! the file length is > 2 characters before attempting to execute an ! interpreter ! ! 3/26 ! ---- ! jobs.c, nojobs.c ! - give_terminal_to now takes a second argument, FORCE. If that ! second argument is non-zero, give the terminal away no matter ! what job_control is set to ! ! jobs.h ! - changed extern declaration of give_terminal_to ! {jobs,sig,subst}.c,parse.y ! - changed all calls to give_terminal_to to add a second argument ! of 0 ! jobs.c ! - changed second argument of call to give_terminal_to in ! end_job_control to 1, to force this even if job_control is 0. ! This fixes the problem of `exec other-job-control-shell' in a ! startup file hanging, since run_startup_files sets job_control to 0 ! subst.c ! - fixed test of subshell_environment in command_substitute to test the ! bit SUBSHELL_ASYNC rather than test equality, since it's now a ! bitmask ! 3/27 ---- ! shell.c ! - changed posix initialization calls to set POSIXLY_CORRECT=y and ! then call sv_strict_posix, so $SHELLOPTS includes `posix' and ! POSIXLY_CORRECT is set, for both the posix command line options ! and when act_like_sh is non-zero ! ! redir.c ! - the `>& filename' redirection now works in posix mode, redirecting ! stdout and stderr, since POSIX.2 leaves it unspecified ! ! doc/bashref.texi ! - removed item about `>& filename' from Bash POSIX Mode section ! ! parse.y ! - fixed a problem in decode_prompt_string with `\W' not printing ! anything if PWD == "//" ! ! lib/readline/input.c ! - in rl_read_key, after calling (*rl_event_hook), check for rl_done ! being set, and return '\n' if it is Makefile.in - changed RELSTATUS to `release' ! 3/28 ---- ! support/bashbug.sh ! - replace use of $(...) with `...` for the benefit of old versions ! of sh ! ! builtins/set.def ! - changed print_all_shell_variables to not print shell function names ! and definitions when in posix mode ! ! doc/bashref.texi ! - noted change in `set' behavior in posix mode section ! 4/2 ! --- ! lib/readline/readline.c ! - changed default value of RL_LIBRARY_VERSION to `4.2' ! 4/5 ! --- ! [bash-2.05-release frozen] --- 1,2940 ---- ! 4/9/2001 ! -------- ! [bash-2.05 released] ! ! 4/10 ! ---- ! redir.c ! - check return value of fclose() in write_here_document() for error ! returns; don't just rely on fwrite() failing ! ! support/bashbug.sh ! - set TMPDIR to /tmp if it's null or unset ! - use $TMPDIR in the TEMP tempfile name template ! - fixed the call to `mktemp', if it exists, to make it more portable ! ! jobs.c ! - if WCONTINUED is not defined, define it to 0 and add a define for ! WIFCONTINUED(wstatus) which expands to 0 ! - add WCONTINUED to the flags passed to waitpid(2) in waitchld() ! - don't increment children_exited if waitpid's status is WIFCONTINUED, ! since we don't want to call a SIGCHLD trap handler in this case ! - in waitchld(), we set child->running to 1 if WIFCONTINUED(status) ! is non-zero ! - make sure pretty_print_job doesn't check for the core dump bit if ! the process has been continued; it's only valid if the job is dead ! - in set_job_status_and_cleanup, set the job to JRUNNING if job_state ! is non-zero and the job was previously marked as JSTOPPED configure.in ! - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS ! lib/glob/glob.c ! - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1 ! jobs.c ! - in kill_pid, we only need to block and unblock SIGCHLD if the ! `group' argument is non-zero, since otherwise we just call `kill' ! on the pid argument ! version.c ! - update copyright date to 2001 ! bashline.c ! - prog_complete_return needs to take a `const char *' as its first ! argument ! - history_completion_generator needs to take a `const char *' as ! its first argument, and `text' needs to be a `const char *' ! 4/11 ! ---- ! redir.c ! - fixed a weird typo in redir_special_open, case RF_DEVFD, added ! call to all_digits before call to legal_number ! - fixed do_redirection_internal to call legal_number instead of atol(3) ! when translating r_duplicating_{in,out}put_word, so it handles ! overflow better ! - produce an error message in redirection_error for out-of-range ! file descriptors ! - change allocation strategy in redirection_error so we don't have to ! malloc scratch memory if redirection_expand() fails ! jobs.h ! - added defines for `running' member of a struct process ! general.c ! - fix legal_number to return 0 when strtol(3) reports overflow or ! underflow ! parse.y ! - changed read_token_word to call legal_number instead of atoi(3) ! input.c ! - return -1/EBADF from close_buffered_fd if fd is < 0 ! command.h ! - fixed bogus comment about IS_DESCRIPTOR in description of the ! REDIRECTEE struct ! print_cmd.c ! - change cprintf's 'd' modifier code to display negative numbers as ! an out-of-range value. We can do this only because the only use ! of %d is to output file descriptor numbers in redirections ! support/mksignames.c ! - need to include config.h to get a possible value for ! UNUSABLE_RT_SIGNALS ! 4/16 ! ---- ! lib/readline/doc/rluser.texinfo ! - corrected a small error in one description of M-DEL ! 4/17 ! ---- ! stringlib.c ! - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER ! in strcreplace() ! support/bashversion.c ! - new file, prints bash version information ! Makefile.in ! - rules for building bashversion and linking it to version.o ! 4/24 ---- + conftypes.h + - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from + variables.h + + variables.h, version.c + - include conftypes.h + + patchlevel.h + - new file, contains define for PATCHLEVEL. Doing away with the old + scheme of having the information in configure.in ! version.c ! - include patchlevel.h ! Makefile.in ! - run bashversion -p to find patch level rather than have configure ! substitute in a value ! - pass -S ${top_srcdir} to support/mkversion.sh ! support/mkversion.sh ! - don't put PATCHLEVEL define into version.h, but accept and ignore ! a -p option ! - take a new -S srcdir option ! - find the patch level by parsing it out of patchlevel.h ! configure.in ! - hard-code BASHVERS assignment instead of reading it from a file ! - remove BASHPATCH; don't substitute it ! _distribution,_patchlevel ! - removed ! 4/26 ! ---- ! shell.c ! - call init_noninteractive() in open_shell_script if forced_interactive ! is non-zero (the shell was started with -i) and fd_is_tty is 0 ! (the script file is a real file, not something like /dev/stdin), ! since it wasn't done earlier ! builtins/printf.def ! - change for POSIX.2 compliance when conversion errors are encountered ! when processing %d, %u, and floating point conversion operators ! (print a warning message, return the value accumulated at the time ! of the error -- which is always 0 -- and exit with a non-zero status) ! command.h ! - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the ! code in execute_cmd.c ! builtins/command.def ! - add CMD_COMMAND_BUILTIN to the created command's flags ! 5/1 ! --- ! configure.in ! - add call to AC_C_CONST to test `const' compiler behavior ! - add call to AC_C_INLINE to test `inline' compiler behavior ! - add call to AC_C_STRINGIZE to test cpp #x stringizing operator ! config.h.in ! - add `#undef const' for configure to substitute ! - add `#undef inline' for configure to substitute ! - add `#undef HAVE_STRINGIZE' for configure to substitute ! include/stdc.h ! - remove code that defines or undefines `const' and `inline' ! - change the __STRING macro to be defined depending on the value ! of HAVE_STRINGIZE ! lib/malloc/malloc.c ! - change the __STRING macro to be defined depending on the value ! of HAVE_STRINGIZE ! lib/readline/{readline,rlprivate}.h ! - moved rl_get_termcap to readline.h, making it a public function ! lib/readline/readline.h ! - new #define, RL_READLINE_VERSION, hex-encoded library version ! number, currently set to 0x0402 ! - new public int variable, rl_readline_version ! lib/readline/readline.c ! - #define RL_READLINE_VERSION if it is not already defined (which it ! should be in readline.h) ! - initialize rl_readline_version to RL_READLINE_VERSION ! lib/readline/doc/rltech.texinfo ! - documented rl_get_termcap ! - documented rl_readline_version ! jobs.c ! - job_exit_status should return an int, not a WAIT (undetected ! before because on most POSIX-like systems a WAIT is really an int) ! builtins/evalfile.c ! - added FEVAL_REGFILE (file must be a regular file) to accepted ! _evalfile flags ! - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags. This ! means that startup files and files read with `.' no longer need ! to be regular files ! 5/2 ! --- ! lib/termcap/Makefile.in ! - fix target for installed termcap library (normally unused) ! lib/tilde/Makefile.in ! - fix install target to install in $(libdir) (normally unused) ! Makefile.in ! - don't make $(man3dir) since there's nothing installed there ! Makefile.in,doc/Makefile.in ! - change `man1ext' to `.1', `man3ext' to `.3' ! - change appropriate install targets to use new values of man[13]ext ! - use `test ...' instead of `[...]' ! - add support for DESTDIR root installation prefix, for package ! building (installdirs, install, install-strip, uninstall targets) ! builtins/common.c ! - new function int get_exitstat(WORD_LIST *list) returns an eight-bit ! exit status value for use in return, exit, logout builtins ! builtins/common.h ! - extern declaration for get_exitstat() ! builtins/{exit,return}.def ! - call get_exitstat where appropriate ! builtins/printf.def ! - add support for "'" flag character as posix 1003.2-200x d6 says ! - fix core dump when user-supplied field width or precision is 0 ! - fix to printstr() to handle zero-length precision with `%b' format ! specifier (printf '%.0b-%.0s\n' foo bar) ! - fix to printstr() to treat a negative field width as a positive ! field width with left-justification ! - fix to mklong to avoid static buffers, which can always be overrun ! by someone sufficiently motivated ! bashline.c ! - change var in add_host_name to type `size_t' for passing to xrealloc ! 5/3 ! --- ! execute_cmd.c ! - change restore_signal_mask to accept a sigset_t *, since a sigset_t ! may not fit into a pointer, change call ! unwind_prot.c ! - use a union UWP in restore_variable when restoring a variable whose ! size is the same as sizeof(int), the reverse of the method used to ! store it in unwind_protect_int ! builtins/printf.def ! - use a #define LENMODS containing the length modifiers instead of ! testing against each possible modifier character, save any mod ! character found ! - add support for ISO C99 length specifiers `j', `t', and `z' ! - if `L' modifier is supplied with a floating point conversion char, ! pass a `long double' to printf if HAVE_LONG_DOUBLE is defined ! configure.in,config.h.in ! - call AC_C_LONG_DOUBLE to check for `long double'; define ! HAVE_LONG_DOUBLE if supported ! bashline.c ! - fix an inadvertantly-unclosed comment in attempt_shell_completion ! - make set_saved_history return a value ! - make dynamic_complete_history return a useful value ! {make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test, ! pcomplete}.c ! - removed some declared-but-unused variables ! builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def ! - removed some declared-but-unused variables ! lib/sh/{zread,netopen}.c ! - removed some declared-but-unused variables execute_cmd.c ! - in execute_arith_command, use a long variable to hold the result ! of evalexp(), since that's what it returns ! builtins/evalstring.c ! - make cat_file return -1 on a read or write error ! lib/sh/stringlib.c ! - make merge_stringlists() return the right value ! 5/7 ! --- ! pcomplete.c ! - remove typo that caused empty declaration (;;) parse.y ! - fix yyerror() to accept a single string argument; fix callers ! trap.c ! - cast pointer to long instead of int when printing message with ! internal_warning() in run_pending_traps() ! subst.c ! - fix process_substitute to handle stdin being closed ! test.c ! - change `while' to `if' in and() and or(), since the loop isn't ! actually performed -- there's an unconditional `return' in the ! loop body ! - check for integer overflow of arguments to `-t' ! lib/sh/netopen.c ! - change _getserv() to reject negative port/service numbers ! expr.c ! - fix strlong() to not convert the base specification from long to ! int before checking for overflow, since truncation on machines ! where sizeof(int) != sizeof(long) may mask errors ! ! builtins/{jobs,kill,wait}.def ! - use legal_number instead of atoi when converting strings to pid_t; ! check for numeric overflow ! input.c ! - fix for cygwin in b_fill_buffer -- off-by-one error when checking ! buffer for \r\n termination ! general.h ! - new #define INT_STRLEN_BOUND(t), computes max length of string ! representing integer value of type T, possibly including a sign ! character ! - include if it's present ! ! {execute_cmd,findcmd,test}.c ! - don't include , since general.h does it now ! ! {execute_cmd,lib/sh/itos,pcomplete,print_cmd,subst,variables}.c ! - use INT_STRLEN_BOUND instead of static array sizes when converting ! various strings to integer values ! shell.h ! - struct fd_bitmap now uses an `int' size, since it's bounded by ! the number of file descriptors, which must fit into an `int' ! execute_cmd.c ! - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L ! - new_fd_bitmap takes an `int' size parameter, not a `long' ! execute_cmd.h ! - change prototype for new_fd_bitmap() ! test.c ! - fix test_stat to check for overflow when parsing the integer file ! descriptor number; return ENOENT instead of EBADF for files that ! are not open ! hashlib.c ! - don't discard the upper 32 bits of the random value, if present ! lib/readline/shell.c ! - use the same INT_STRLEN_BOUND mechanism to decide how much space to ! allocated in sh_set_lines_and_columns ! 5/8 ! --- ! aclocal.m4 ! - add check for libtinfo (termcap-specific portion of ncurses-5.2) to ! BASH_CHECK_LIB_TERMCAP ! - new macro, RL_LIB_READLINE_VERSION, checks version of installed ! readline library and (optionally) writes version #defines to ! config.h. Bash doesn't use the version defines ! configure.in ! - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh ! execute_cmd.c ! - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros ! to check array bounds before indexing into the sample string ! unwind_prot.[ch] ! - import new versions submitted by Paul Eggert ! with a couple of changes for backwards compatibility, so the rest ! of the source doesn't need to be changed yet ! jobs.c ! - use unwind_protect_var on last_made_pid in run_sigchld_trap ! builtins/bind.def ! - use unwind_protect_var on rl_outstream general.c ! - rework print_rlimtype to use INT_STRLEN_BOUND and handle the ! most negative number correctly ! expr.c ! - `tokval' should have been a `long', since all arithmetic is done ! as longs ! builtins/history.def ! - consolidate tests for valid history position in one block to ! avoid duplicate code and strings ! builtins/ulimit.def ! - fix check for overflow when setting limit to work when int is 32 ! bits and RLIMTYPE is 64 ! lib/sh/tmpfile.c ! - don't truncate the result of time(3) to int; just use time_t, ! since it's being assigned to an `unsigned long' ! mailcheck.c ! - use legal_number instead of atoi in time_to_check_mail() to catch ! more numeric errors; consolidate error checking in one block ! - last_time_mail_checked should be a time_t ! 5/9 ! --- ! builtins/set.def ! - recognize `set [-+]o nolog' if HISTORY is defined ! bashline.c ! - new variable `dont_save_function_defs', set by `set -o nolog'; ! currently ignored command.h ! - the `dest' member of a REDIRECTEE is now an `int' ! parse.y,redir.c ! - changed uses of `redir.test' (where redir is a REDIRECTEE) since ! it's now an int ! lib/readline/rlstdc.h ! - don't mess around with `const', rely on configure to supply a ! proper definition if the compiler doesn't support it ! lib/tilde/tilde.h ! - include if HAVE_CONFIG_H is defined ! - don't mess around with `const', rely on configure builtins/shopt.def ! - new read-only `shopt' option, login_shell, non-zero if shell is a ! login shell (as decided by shell.c) ! - new function set_login_shell(), sets shopt private value of ! login_shell ! builtins/common.h ! - new extern declaration for set_login_shell ! shell.c ! - call set_login_shell after setting value of login_shell (in ! main() and set_shell_name()) ! parse.y ! - added new `\A' prompt string escape sequence: time in 24-hour ! HH:MM format ! configure.in, config.h.in ! - check for , define HAVE_GRP_H if found ! builtins/complete.def ! - add new `-A group/-g' option to complete group names ! pcomplete.h ! - new define for CA_GROUP, used with group name completion ! pcomplete.c ! - add code to support CA_GROUP group name completion ! bashline.c ! - new function, bash_groupname_completion_function(), supports ! programmable completion of group names ! bashline.h ! - extern declaration for bash_groupname_completion_function lib/readline/bind.c ! - new inputrc variable, `match-hidden-files', controls completion ! matching files beginning with a `.' (on Unix) ! lib/readline/complete.c ! - new variable, _rl_match_hidden_files, mirrors `match-hidden-files' ! inputrc variable ! lib/readline/rlprivate.h ! - extern declaration for _rl_match_hidden_files ! builtins/hash.def ! - new `-t' option to list hash values for each filename argument ! builtins/read.def ! - alarm(3) takes an `unsigned int' argument, not int ! - check for arithmetic overflow with -t and -n options ! input.c ! - check for read error before doing \r\n translation on cygnus in ! b_fill_buffer ! - reset bp->b_used to 0 instead of leaving it at -1 on read error ! in b_fill_buffer ! builtins/shopt.def ! - new functions, shopt_setopt(name, mode) and ! shopt_listopt(name, mode) to give the rest of the shell an easy ! interface ! builtins/common.h ! - extern declarations for shopt_setopt and shopt_listopt ! shell.c ! - new invocation options -O and +O, to list or set/unset shopt ! options like +o/-o sets and unsets `set -o' options ! doc/{bash.1,bashref.texi} ! - document `set -o nolog' ! - document `login_shell' shopt option ! - document new `\A' prompt string escape sequence ! - document new `-t' option to `hash' ! - document new `[+-]O' invocation option ! doc/bashref.texi ! - add text to `Invoking Bash' section defining a login shell; text ! taken from man page ! doc/bash.1, lib/readline/doc/rluser.texinfo ! - documented new complete/compgen `-A group/-g' option ! lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 ! - documented new `match-hidden-files' inputrc variable ! 5/10 ---- configure.in ! - fix AC_CHECK_PROG(ar, ...) ! - add AC_CHECK_TYPE for ssize_t ! config.h.in ! - new #undef for ssize_t ! lib/sh/zread.c ! - int -> ssize_t fixes to mirror modern declarations of read and write ! - the `off' variable in zsyncfd should be an off_t since it computes ! a file offset ! - the local buffer `lbuf' is now char, since it's not nice to pass ! unsigned char * to read(2), and the values from it are assigned to ! a char anyway ! - lind and lused are now size_t, since they index into a buffer ! - set lused to 0 on read error ! lib/sh/zwrite.c ! - change second argument to type `char *', since ISO C says you have ! to pass a `char *' to `write' ! externs.h ! - fix extern declarations of zread, zread1, zreadc, and zwrite ! - prototype extern declaration of qsort_string_compare ! - add extern declaration for history_delimiting_chars() from parse.y ! input.h ! - b_used and b_inputp members ofr struct BSTREAM are now size_t ! builtins/evalstring.c ! - the number of chars read with zread in cat_file should be assigned ! to a variable of type ssize_t ! input.c ! - the number of chars read with zread in b_fill_buffer should be ! assigned to a variable of type ssize_t ! - `localbuf' is now type char[], since POSIX says you shouldn't pass ! unsigned char * to read(2) ! - in getc_with_restart(), use a variable of type unsigned char to ! get a value from the local buffer and return it ! - in ungetc_with_restart, explicitly return the character arg passed ! to avoid relying on localbuf being unsigned char ! subst.c ! - the number of chars read with zread in read_comsub should be ! assigned to a variable of type ssize_t ! mksyntax.c ! - instead of casting to unsigned char * in addcstr, use a variable ! of type unsigned char and let the compiler do the work ! ! parse.y ! - instead of casting to unsigned char * in yy_readline_get, use a ! variable of type unsigned char and let the compiler do the work ! - ditto for yy_string_get and shell_getc (cast to unsigned char) subst.c ! - instead of casting to unsigned char when assigning to ifscmap in ! expand_word_internal, use a variable of type unsigned char and ! let the compiler do the work ! lib/sh/strtrans.c ! - instead of casting to unsigned char in ansic_quote, use a variable ! of type unsigned char and let the compiler do the work ! builtins/evalstring.c ! - remove extern declarations for zwrite and run_trap_cleanup; they're ! in externs.h ! - prototype cat_file forward declaration ! ! Makefile.in ! - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES ! ! aclocal.m4 ! - change RL_LIB_READLINE_VERSION to set RL_PREFIX, RL_LIBDIR, ! and RL_INCLUDEDIR to what it used to test the installed readline ! library version for use by the caller ! - change RL_LIB_READLINE_VERSION to not compute ac_cv_rl_prefix if ! the caller has already assigned it a value ! - rename _rl_prefix -> ac_cv_rl_prefix, _rl_libdir -> ac_cv_rl_libdir, ! _rl_includedir -> ac_cv_rl_includedir ! ! configure.in ! - change testing of whether to use the value of ! $opt_with_installed_readline to be != no, to allow the user to ! specify a prefix where the installed readline library may be found ! - if --with-installed-readline=PREFIX is supplied, set ac_cv_rl_prefix ! to PREFIX before calling RL_LIB_READLINE_VERSION ! - if --with-installed-readline[=PREFIX] is supplied, don't set ! RL_LIBDIR and RL_INCLUDEDIR; let RL_LIB_READLINE_VERSION take care ! of it, set RL_INCLUDE=-I${RL_INCLUDEDIR} ! - if --with-installed-readline[=PREFIX] is supplied, and we're ! linking with the history library, assign $RL_LIBDIR to HIST_LIBDIR ! so we use the same version of the installed readline and history ! libraries ! Makefile.in, builtins/Makefile.in ! - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable ! doc/bashref.texi ! - updated description of --with-installed-readline configure option ! general.c ! - moved QSFUNC typedef here from builtins/common.c ! {alias,bashline,variables,lib/sh/stringvec}.c ! - cast fourth argument to qsort to (QSFUNC *) ! alias.c ! - prototype forward declaration of qsort_alias_compare ! bashhist.c ! - include for extern declaration of glob_pattern_p ! - remove extern declaration of history_delimiting_chars; it's now ! in externs.h ! - prototype forward declarations of histignore_item_func, ! maybe_add_history, and bash_add_history ! bracecomp.c ! - remove extern declaration for sh_backslash_quote; it's in externs.h ! braces.c ! - remove extern declaration for extract_command_subst; it's in subst.h ! - prototype forward declarations for expand_amble, array_concat, and ! brace_gobbler ! error.c ! - prototype extern declaration of give_terminal_to, fix bad call ! {execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir, ! shell}.c ! - prototype all static forward function declarations ! pcomplete.c ! - changed some function parameters to `const char *' to avoid discarding ! const qualifier ! make_cmd.c ! - make_bare_word, make_word_flags, and make_word now take a ! `const char *' string argument ! make_cmd.h ! - changed extern declarations for make_bare_word and make_word ! print_cmd.c ! - cprintf now takes a `const char *' as its first argument, like ! xprintf and printf ! - the conditional define for xprintf should have been HAVE_VPRINTF, ! not HAVE_VFPRINTF ! shell.c ! - in isnetconn(), the return value of sizeof() is size_t ! aclocal.m4 ! - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in ! BASH_CHECK_TYPE ! configure.in ! - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument ! to getpeername(2)) ! 5/11 ---- ! lib/readline/bind.c ! - make `useq' a char array to pass to rl_macro_bind in ! rl_parse_and_bind ! lib/readline/{{bind,isearch}.c,rlprivate.h} ! - _rl_isearch_terminators is now a char *, not unsigned char * ! {subst,variables,lib/sh/tmpfile}.c ! - dollar_dollar_pid is now a `pid_t' instead of `int' ! ! variables.c ! - sbrand() now takes an `unsigned long' to set the seed value ! - changed last_random_value to type int, since it's always between ! 0 and 32767 ! - use strtoul to convert the value in assign_random instead of atoi ! - take out casts in any arguments to sbrand() ! - take out cast to int in call to inttostr in set_ppid() subst.c ! - don't cast last_asynchronous_pid when passing to itos() ! ! {sig,subst}.c ! - prototype all static forward function declarations ! 5/14 ---- ! {test,trap,variables}.c ! - prototype all static forward function declarations ! variables.c ! - free_variable_hash_data() now takes a PTR_T, a `generic pointer' ! builtins/{alias,bind,break,cd,complete,declare,enable,exit,fc,fg_bg,help, ! history,jobs,pushd,read,set,trap,umask, ! - prototype all static forward function declarations ! builtins/read.def ! - reset_eol_delim now takes a `char *' arg, since that's what the ! unwind_protect functions pass it, and it ignores its arguments ! anyway ! lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c ! - prototype all static forward function declarations ! lib/tilde/tilde.c ! - prototype all static forward function declarations ! - tilde_find_prefix, tilde_find_suffix, isolate_tilde_prefix, and ! glue_prefix_and_suffix now take `const char *' arguments where ! appropriate ! configure.in,config.h.in ! - check for vsnprintf, define HAVE_VSNPRINTF if found ! lib/readline/display.c ! - use vsnprintf() in rl_message if it's available; if we don't, at ! least set the last character in msg_buf to 0 to avoid overrun -- ! we really can't do anything about overflow at this point. if it's ! available, this fixes buffer overflow problems in rl_message ! 5/15 ! ---- ! lib/readline/histexpand.c ! - in get_history_word_specifier, allow any character to terminate ! a `:first-' modifier, not just `:' and null. This is what csh ! appears to do. This allows things like `!:0- xyzzy' to replace the ! last argument with xyzzy ! 5/18 ! ---- ! configure.in, config.h.in ! - check for , define HAVE_STDINT_H if found ! - check for intmax_t in , define intmax_t as long if not ! found ! 5/21 ! ---- ! builtins/kill.def ! - change to use strerror() for error message when kill(2) fails ! aclocal.m4 ! - new macro, BASH_C_LONG_LONG, check for `long long' ! configure.in, config.h.in ! - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found ! lib/sh/snprintf.c ! - new file, with implementations of snprintf, vsnprintf, asprintf, ! and vasprintf, derived from inetutils version ! Makefile.in, lib/sh/Makefile.in ! - add snprintf.c/snprintf.o ! configure.in, config.h.in ! - add checks for snprintf, asprintf, vasprintf, with appropriate ! cpp defines ! lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c ! - xmalloc and xrealloc now take `size_t' arguments, like their bash ! counterparts ! externs.h,lib/sh/itos.c ! - inttostr and itos now take `long' arguments ! - inttostr takes a `size_t' argument for the buffer size ! ! {expr,lib/malloc/malloc,variables,general}.c ! - fixed calls to itos() by removing casts, etc. ! ! subst.[ch] ! - get_dollar_var_value now takes a long, not an int ! - sub_append_number now takes a long, not an int ! ! subst.c ! - in parameter_brace_expand_word, use a long and legal_number to ! translate ${N}, to avoid overflow ! - in parameter_brace_expand_length, use a long and legal_number to ! translate ${#N}, to avoid overflow ! - in do_array_element_assignment, array_expand_index, ! array_value_internal, use arrayind_t instead of int ! - let verify_substring_values take long * arguments for the return ! value of evalexp() ! - pass long * arguments to verify_substring_values in ! parameter_brace_substring ! - parameter_brace_expand_length now returns `long' ! - parameter_brace_expand now uses a long variable for the return ! value of parameter_brace_expand_length ! - param_expand now uses a long variable for the return value from ! evalexp ! - array_length reference now returns an `arrayind_t', since it can ! return the num_elements member of an array, which is of type ! arrayind_t ! subst.h ! - array_expand_index now returns an `arrayind_t' ! array.[ch] ! - array_subrange now takes arrayind_t arguments, not `int' ! - dup_array_subrange now uses arrayind_t local variable to do ! array indexing ! - use long to print array indices in print_element ! variables.c ! - null_array_assign, assign_dirstack, bind_array_variable ! now take arrayind_t arguments as array indices ! - assign_array_var_from_word_list, assign_array_var_from_string, ! unbind_array_element now use arrayind_t local variables for ! array indexing ! variables.h ! - change extern declaration of bind_array_variable ! builtins/common.[ch] ! - get_numeric_arg now returns a `long', since it usually returns ! the value of legal_number() ! builtins/{shift,break}.def ! - use long variables for the return value of get_numeric_arg ! builtins/history.def ! - convert string argument to int only if it's in range ! builtins/pushd.def ! - set_dirstack_element and get_dirstack_element now take `long' ! index arguments ! - get_dirstack_index now takes a `long' index argument, since it's ! passed the converted value from legal_number ! lib/sh/timeval.c ! - in print_timeval, don't assume that the number of minutes fits into ! an int, since it's just seconds/60. ! lib/sh/clock.c ! - ditto for print_clock_t ! 5/22 ---- ! shell.c ! - since the -O option settings may possibly be overridden by the ! normal shell initialization or posix initialization, save the ! invocation options on an alist (with add_shopt_to_alist) and ! process them after basic initialization (with run_shopt_alist) ! 5/23 ---- ! trap.h ! - new define, BASH_NSIG, all system signals plus special bash traps ! trap.c, builtins/trap.def ! - use BASH_NSIG for array bounds and loops where appropriate ! trap.c ! - change decode_signal to disallow numeric signal numbers above ! NSIG -- this means you can only reference special traps like ! DEBUG by name ! - new SPECIAL_TRAP(s) macro to test whether s is one of the special ! bash traps (currently DEBUG and EXIT) ! - change reset_or_restore_signal_handlers so command substitution ! doesn't inherit the debug trap (like ksh93), and child processes ! don't have to rely on initialize_traps being run to get rid of ! any debug trap ! support/mksignames.c ! - add extra "ERR" signal name, value NSIG+1, allocate space for it ! and write it out in signal_names[] ! trap.h ! - new define: ERROR_TRAP == NSIG+1, change BASH_NSIG to NSIG+2 ! - extern declarations for set_error_trap, run_error_trap ! - new define: TRAP_STRING(s), expands to trap_list[s] if signal S ! is trapped and not ignored, NULL otherwise ! trap.c ! - add ERROR_TRAP to SPECIAL_TRAPS define ! - initialize ERROR_TRAP stuff in initialize_traps ! - new function: set_error_trap(command), sets the ERR trap string ! - new function: run_error_trap(command), runs the ERR trap string ! - set trap string for ERROR_TRAP to NULL in free_trap_strings ! - change reset_or_restore_signal_handlers so child processes don't ! inherit the ERR trap ! - add case to call run_error_trap in maybe_call_trap_handler execute_cmd.c ! - in execute_command_internal, keep track of ERR trap and call it if ! necessary ! - use TRAP_STRING to get the value of debug and error traps ! - in execute_function, arrange things so the ERR trap is not inherited ! by shell functions, and is saved and restored like the DEBUG trap ! doc/{bash.1,bashref.texi} ! - documented new ERR trap ! tests/{trap.{tests,right},trap2.sub,trap2a.sub} ! - added ERR trap tests ! subst.c ! - on machines without /dev/fd, change the named pipe fifo list to a ! list of structs containing pathname and proc information ! - change unlink_fifo_list to kill the proc in the fifo list with ! signal 0 and not remove the fifo if the proc is still alive. This ! should fix the problem on those backward systems without /dev/fd ! where fifos were removed when a job using process substitution was ! suspended ! 5/24 ! ---- ! examples/loadables/getconf.h ! - new file, with basic defines needed to make getconf work minimally ! on POSIX systems without the necessary definitions ! ! examples/loadables/getconf.c ! - replacement functions for confstr, sysconf, pathconf for systems ! that lack them, providing a minimal posix interface ! - heavily augmented getconf, now supports all POSIX.1-200x, ! POSIX.2-200x, Solaris 7, AIX 4.2 getconf variables ! 5/29 ---- ! builtins/setattr.def ! - make `readonly', `export', and `declare' print `invisible' variables ! as just a command and variable name, without a value, when listing ! all variables (as POSIX.2-200x d6 requires) ! 5/30 ---- ! configure.in ! - upgraded to autoconf-2.50 on main development machine, so require ! autoconf-2.50 in preparation for using some if its new features ! - call AC_C_PROTOTYPES ! - remove call to AC_EXEEXT, which now does the wrong thing ! - changed AC_INIT to new flavor ! - added call to AC_CONFIG_SRCDIR ! - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS ! - AC_RETSIGTYPE -> AC_TYPE_SIGNAL ! configure.in, aclocal.m4, config.h.in ! - removed call to BASH_LARGE_FILE_SUPPORT, use AC_SYS_LARGEFILE ! standard support, with new macros _FILE_OFFSET_BITS and ! _LARGE_FILES ! - removed definition of BASH_LARGE_FILE_SUPPORT ! doc/bashref.texi ! - document new `--enable-largefile' configure option lib/readline/readline.c ! - change rl_set_prompt to call rl_expand_prompt unconditionally, so ! local_prompt and local_prompt_prefix get set correctly ! 6/6 ! --- ! lib/readline/complete.c ! - don't append `/' or ` ' to a match when completing a symlink that ! resolves to a directory, unless the match doesn't add anything ! to the word. This means that a tab will complete the word up to ! the full name, but not add anything, and a subsequent tab will add ! a slash. Change to append_to_match; callers changed ! hashlib.c ! - new function, hash_table_nentries (table), returns the number of ! items in TABLE ! hashlib.h ! - extern declaration for hash_table_nentries ! configure.in ! - configure without bash malloc on openbsd; they claim it needs ! eight-bit alignment (which the bash malloc provides, but...) ! 7/2 ! --- ! stringlib.c ! - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement ! string length is > 0, avoid possible hangs if replacement is null ! subst.c ! - don't include input.h; no longer needed ! configure.in ! - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and ! BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used ! config.h.in ! - remove define for HAVE_RESTARTABLE_SYSCALLS ! aclocal.m4 ! - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used ! execute_cmd.c ! - changed select command so `return' no longer terminates the select ! command, so it can be used to return from an enclosing function. ! This is as ksh (88 and 93) does it ! lib/readline/vi_mode.c ! - fix trivial typo in declaration of vi_motion; `t' appears twice; ! the second instance should be `T' ! 7/3 ! --- ! configure.in ! - don't add -static to LDFLAGS on Solaris 2.x. This means that the ! auxiliary programs will be built as dynamic executables, but that ! should do no harm ! 7/5 ! --- ! lib/glob/fnmatch.c ! - fix the code that processes **(pattern) to short-circuit if the ! pattern is ill-formed or lacks a trailing `)' -- this fixes the ! segfault on **(/*) ! Makefile.in, builtins/Makefile.in ! - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in ! cross-compilation ! - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD) ! ! configure.in, config.h.in ! - check for getaddrinfo(3), define HAVE_GETADDRINFO if found ! lib/sh/netopen.c ! - implemented a version of _netopen (_netopen6) that uses ! getaddrinfo(3) if available, use if HAVE_GETADDRINFO is defined. ! old _netopen is _netopen4; _netopen now calls either _netopen6 ! or _netopen4 as appropriate ! ! 7/9 --- ! builtins/exit.def ! - don't source ~/.bash_logout if subshell_environment is non-zero ! execute_command.c ! - in execute_until_or_while, handle the case where `breaking' is ! set in the loop test (e.g., by the job control code when a job ! is stopped with SIGTSTP), but the return value from the test is ! something that would cause the loop to break. Need to decrement ! `breaking' in this case ! 7/10 ! ---- ! execute_cmd.c ! - in execute_in_subshell, make sure a command of type cm_subshell ! inherits its `enclosing' command's CMD_IGNORE_RETURN flag ! variables.c ! - in maybe_make_export_env, don't allow restricted shells to put ! exported functions in the export environment ! 7/11 ! ---- ! lib/glob/strmatch.h ! - renamed old fnmatch.h ! - changed guard #ifdef to _STRMATCH_H ! - include system if HAVE_LIBC_FNM_EXTMATCH is defined ! ! lib/glob/strmatch.c ! - renamed old fnmatch.c ! - include "strmatch.h" ! - if HAVE_LIBC_FNM_EXTMATCH is defined, define a dummy version of ! strmatch() that just calls fnmatch(3) ! lib/glob/glob.c ! - include "strmatch.h" ! - fnmatch -> strmatch ! Makefile.in, lib/glob/Makefile.in ! - fnmatch -> strmatch ! {bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c, ! pathexp.h,builtins/help.def ! - include ! - fnmatch -> strmatch ! execute_cmd.c ! - broke the code that parses the interpreter name from a #! line ! out from execute_shell_script to a new function, getinterp() ! - call getinterp from execute_shell_script ! - use return value from getinterp in error message about bad ! #! interpreter in shell_execve ! 7/12 ! ---- ! lib/readline/isearch.c ! - the last isearch string is now remembered in a new static variable, ! last_isearch_string ! - if ^R^R is typed, readline now searches for the remembered isearch ! string, if one exists ! 7/24 ! ---- ! pcomplete.h ! - extern declaration for completions_to_stringlist() ! 7/25 ! ---- ! builtins/complete.def ! - make compgen handle -o default option ! - make compgen return success only if sl->list_len is non-zero, ! indicating that there are items on the list ! 7/31 ! ---- ! execute_cmd.c ! - in execute_connection, force stdin to /dev/null for asynchronous ! commands if job control is not active, not just if the shell is ! running a shell script (since you can run `set -m' in a script) ! lib/readline/rltty.c ! - make sure _rl_tty_restore_signals resets `tty_sigs_disabled' on ! successful restoration of the terminal modes ! - make sure _rl_tty_disable_signals turns off IXON so that ^S and ! ^Q can be read by rl_quoted_insert ! 8/1 --- ! aclocal.m4 ! - new check for FNM_EXTMATCH being defined in , as Ullrich ! Drepper intends to do for new versions of GNU libc ! config.h.in ! - new definition for HAVE_LIBC_FNM_EXTMATCH ! configure.in ! - check for fnmatch, but don't define anything in config.h ! - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH ! 8/2 --- ! alias.h ! - remove bogus extern declaration for xmalloc() ! - include "stdc.h" ! - add prototype declarations for all extern function declarations ! ! xmalloc.c,lib/readline/xmalloc.c ! - fix xmalloc to return a PTR_T ! - fix xrealloc to return a PTR_T and take a PTR_T as first argument ! include/ansi_stdlib.h ! - extern declarations for malloc and realloc have them return PTR_T ! xmalloc.h ! - new file, with extern declarations for functions in xmalloc.c ! general.h ! - removed extern declarations for functions in xmalloc.c ! - include xmalloc.h ! Makefile.in,builtins/Makefile.in ! - update dependencies to include xmalloc.h ! parse.y,{alias,array,bashline,bracecomp,execute_cmd,findcmd,flags,general, ! hashcmd,locale,mailcheck,make_cmd,pathexp,pcomplete,print_cmd,stringlib, ! subst,unwind_prot,variables}.c ! builtins/{common,evalfile}.c ! builtins/{cd,command,enable,exec,printf,read,set}.def ! lib/sh/{makepath,netopen,pathphys,setlinebuf,shquote,snprintf,stringlist, ! strtrans,tmpfile}.c ! lib/readline/{util,terminal,shell,readline,macro,kill,isearch,input, ! histfile,histexpand,display,complete,bind}.c ! - make sure all calls to xmalloc are cast to the right return value ! siglist.c ! - include xmalloc.h ! parse.y,{alias,bashline,bracecomp,expr,make_cmd,nojobs,print_cmd,subst}.c ! builtins/{fc,printf,read}.def ! lib/sh/snprintf.c, lib/tilde/tilde.c ! lib/readline/{bind,display,histexpand,isearch,macro,util,vi_mode}.c ! - make sure all calls to xrealloc are cast to the right return value ! lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c ! - include xmalloc.h, remove extern declaration of xmalloc ! lib/readline/xmalloc.h ! - xmalloc and xrealloc should return PTR_T ! lib/readline/rldefs.h ! - don't include an extern declaration for xmalloc ! 8/7 ! --- ! support/shobj-conf ! - fixed up commented-out stanzas for HP's unbundled C compiler on ! HP/UX ! support/bashbug.sh ! - force the subject to be changed from the default ! lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 ! - document that transpose-words swaps the last two words on the line ! if point is at the end of the line ! 8/9 ! --- ! stringlib.c ! - fix possible infinite recursion problem with null pattern in ! strsub() ! hashlib.c ! - new function copy_hash_table to copy a hash table using a caller- ! supplied function to copy item data (defaults to savestring()) ! hashlib.h ! - new extern declaration for copy_hash_table ! builtins/declare.def ! - changes so that declare [-a] var=value assigns `value' to element 0 ! of array variable `var' like ksh93 ! - change so that declare [-a] var[N]=value assigns `value' to element ! N of array variable `var' like ksh93 ! 8/13 ---- ! arrayfunc.c ! - new file, for miscellaneous array functions ! arrayfunc.h ! - new file, extern declarations for functions in arrayfunc.c ! variables.c ! - move convert_var_to_array, bind_array_variable, ! assign_array_from_string, assign_array_var_from_word_list, ! assign_array_var_from_string, quote_array_assignment_chars, ! skipsubscript, unbind_array_element, print_array_assignment ! to arrayfunc.c ! shell.h ! - include arrayfunc.h after variables.h ! variables.h ! - remove above extern function declarations moved to arrayfunc.h ! - add extern declaration for var_lookup ! Makefile.in ! - add arrayfunc.c, arrayfunc.h in appropriate places ! - add arrayfunc.h to dependencies ! subst.c ! - move valid_array_reference, array_expand_index, array_variable_part, ! array_value_internal, array_value (now global), get_array_value, ! do_array_element_assignment to arrayfunc.c ! subst.h ! - extern declarations for functions above moved to arrayfunc.h ! arrayfunc.h ! - extern declarations for above functions from subst.c ! subst.[ch] ! - string_list_dollar_star and string_list_dollar_at are now global ! functions ! - quote_escapes is now a global function ! subst.c ! - maybe_expand_string -> expand_string_if_necessary ! - expand_string_to_string -> expand_string_to_string_internal ! - new functions: expand_string_to_string and ! expand_string_unsplit_to_string, which call ! expand_string_to_string_internal with expand_string and ! expand_string_unsplit as the FUNC arguments, respectively ! ! arrayfunc.c ! - change array_expand_index to call expand_string_to_string instead ! of maybe_expand_string ! 8/14 ---- ! shell.c ! - in execute_env_file, call expand_string_unsplit_to_string ! mailcheck.c ! - in check_mail, call expand_string_to_string ! variables.c ! - in assign_in_env, call expand_string_unsplit_to_string ! arrayfunc.c ! - new function, array_variable_name, splits an array reference into ! a name (which is returned as a new string) and subscript ! - change array_variable_part to just call array_variable_name and ! look up the string returned with find_variable ! - new function, find_or_make_array_variable (name, flags) which will ! look up an array variable and convert a string variable to an ! array if necessary. The FLAGS argument, if non-zero, says to ! check the readonly and noassign attributes and fail if either is set ! builtins/read.def ! - make `read -a aname' honor any readonly status of `aname' ! - read -a now calls find_or_make_array_variable with FLAGS value 1 ! arrayfunc.[ch], subst.c, builtins/{declare,read}.def ! - do_array_element_assignment -> assign_array_element ! 8/20 ! ---- ! parse.y ! - changed `for' command grammar to allow missing word list after `IN' ! token, like latest POSIX drafts require ! lib/sh/tmpfile.c ! - in sh_mktmpname(), check for filenum == 0 and init to non-zero number ! in this case. it can happen on arithmetic overflow ! support/mkversion.sh ! - added `[0-9].[0-9][0-9][a-z]' as an acceptable value for a ! distribution to allow for intermediate versions, like 2.05a ! support/config.guess ! - removed the addition of the output of `/usr/bin/objformat' when ! creating the canonical name on FreeBSD machines, so the canonical ! name is once again `freebsd4.2' instead of `freebsdelf4.2' ! 8/22 ---- ! lib/readline/{rlstdc,history,keymaps,readline,rldefs,rlprivate,rlshell, ! rltypedefs,xmalloc}.h ! lib/readline/{bind,compat,complete,display,funmap,histexpand,histsearch, ! input,isearch,kill,nls,parens,readline,rltty,search,shell,signals,vi_mode ! - changed __P to PARAMS ! lib/tilde/tilde.[ch] ! - changed __P to PARAMS ! {Makefile,configure}.in ! - changed the version number to 2.05a ! - changed the release status to `alpha1' ! 8/23 ---- ! support/shobj-conf ! - support for building shared libraries on Darwin/MacOS X ! siglist.h ! - extern declaration for strsignal() to compensate for lack of ! a definition in some system include files ! jobs.c ! - remove casts from strsignal() calls ! [bash-2.05a-alpha1 frozen] ! 8/27 ---- ! [bash-2.05a-alpha1 released] ! 8/27 ---- ! execute_cmd.c ! - fix eval_arith_for_expr to handle the case where the expanded ! word list is NULL, returning 0 in this case ! print_cmd.c ! - in print_function_def, make sure that func_redirects is assigned ! a value before being used ! 8/28 ! ---- ! alias.c ! - include for definition of isalpha() ! bashhist.h ! - add prototypes for extern function declarations ! flags.c ! - include bashhist.h for extern function declarations ! mksyntax.c ! - include if HAVE_UNISTD_H is defined in config.h ! parse.y ! - include test.h for extern function declarations ! externs.h ! - change extern declaration for setlinebuf to sh_setlinebuf ! stringlib.c ! - include for extern function declarations ! variables.h ! - add function prototypes for all of the sv_* functions builtins/common.h ! - add extern declarations for set_shellopts() and parse_shellopts() ! from builtins/set.def ! variables.c ! - include "hashcmd.h" for extern declaration for flush_hashed_filenames ! - include "pathexp.h" for extern declaration for setup_glob_ignore ! lib/malloc/malloc.c ! - cast to `long' instead of `int' in memalign for 64-bit machines ! {pcomplete,trap}.c ! - changed printf escape sequences used to print pointers to %p ! lib/readline/undo.c ! - include "xmalloc.h" for extern function declaration ! input.h ! - add function prototypes to extern declarations for getc_with_restart ! and ungetc_with_restart ! variables.[ch] ! - changed type of `function' member of `struct name_and_function' to ! `sv_func_t', which is defined and prototyped in variables.h ! - map_over now takes an `sh_var_map_func_t *' ! shell.h ! - start of a set of function pointer typedefs like those in ! lib/readline/rltypedefs.h ! hashlib.[ch] ! - second paramter to flush_hash_table is now an `sh_free_func_t *' ! trap.c ! - parameter to reset_or_restore_signal_handlers is now an ! `sh_resetsig_func_t *' ! pcomplete.h, pcomplib.c ! - function pointer argument to print_all_compspecs is now an ! `sh_csprint_func_t *' ! - function pointer `list_getter' element of an `ITEMLIST' is now ! prototyped with __P((...)) instead of using `Function *' ! jobs.[ch] ! - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *' ! alias.c ! - map_over_aliases now takes an `sh_alias_map_func_t *' ! - free_alias_data now takes a `PTR_T' ! pathexp.c ! - function pointer argument to ignore_globbed_names is now an ! `sh_ignore_func_t *' bashline.c ! - function pointer argument to _ignore_completion_names is now an ! `sh_ignore_func_t *' ! pathexp.h,{bashhist,bashline.c ! - `item_func' member of a `struct ignorevar' is now an ! `sh_iv_item_func_t *' ! builtins/evalfile.c ! - `errfunc' is now an `sh_vmsg_func_t *' ! jobs.c ! - map_over_job now takes an `sh_job_map_func_t *' as its first argument ! array.[ch] ! - function pointer argument to array_walk is now an ! `sh_ae_map_func_t *' ! general.c ! - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *', ! and so the assignment in tilde_initialize doesn't need a cast ! list.c ! - map_over_words now takes an `sh_icpfunc_t *' as its second argument ! input.h ! - the `getter' and `ungetter' function pointer members of a ! BASH_INPUT are now of types `sh_cget_func_t *' and ! `sh_cunget_func_t *' respectively ! - init_yy_io now takes an `sh_cget_func_t *' as its first argument and ! an `sh_cunget_func_t *' as its second ! parse.y ! - init_yy_io now takes an `sh_cget_func_t *' as its first argument and ! an `sh_cunget_func_t *' as its second ! - initialize_bash_input casts bash_input.getter and bash_input.ungetter ! appropriately ! builtins/mkbuiltins.c ! - make the extern function definitions written to builtext.h have ! prototypes with __P((...)) ! - include "stdc.h" ! - change Function to mk_handler_func_t ! - fixed comment_handler to take the right number of args ! - prototyped all the handler functions with __P((...)) ! ! builtins.h ! - the `function' member of a struct builtin is now of type ! `sh_builtin_func_t *' ! ! builtins/common.[ch] ! - last_shell_builtin, this_shell_builtin are now of type ! `sh_builtin_func_t *' ! - find_shell_builtin, builtin_address, find_special_builtin now return ! `sh_builtin_func_t *' ! ! builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y ! - changed all declarations of last_shell_builtin and this_shell_builtin ! ! execute_cmd.c ! - execute_builtin, execute_builtin_or_function, ! execute_subshell_builtin_or_function now take an ! `sh_builtin_func_t *' instead of a `Function *' for argument ! - changed appropriate variables from `Function *' to ! `sh_builtin_func_t *' ! ! builtins/{bind,builtin,enable,read,setattr}.def ! - replaced uses of `Function *' in variable declarations with ! appropriate types (sh_builtin_func_t * or rl_command_func_t *) ! builtins/set.def ! - set_func and get_func members of binary_o_options are now of types ! `setopt_set_func_t *' and `setopt_get_func_t *', which are ! prototyped ! builtins/shopt.def ! - set_func member of shopt_vars is now of type `shopt_set_func_t *' ! bashline.c ! - enable_hostname_completion now returns `int' (the old value of ! perform_hostname_completion) ! [The only use of Function and VFunction now is for unwind-protects] ! 9/4 ! --- ! lib/sh/getcwd.c ! - use const define from config.h rather than `CONST' ! - use PTR_T define from xmalloc.h rather than `PTR' ! - include xmalloc.h for PTR_T ! - remove PATH_MAX define, rely on value from maxpath.h ! ! {general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c ! - don't include maxpath.h directly; it's already included by shell.h ! ! lib/sh/mailstat.c ! - new `mailstat()' implementation, to stat a mailbox file for ! mail checking. handles maildir-style mail directories with one ! file per message and creates a dummy stat struct from them ! lib/sh/Makefile.in ! - add mailstat.c and mailstat.o in the appropriate places ! lib/malloc/malloc.c ! - augmented implementation with wrapper functions that pass in file ! and line number information from cpp. currently unused, but a ! placeholder for future debugging and use tracking ! ! lib/malloc/shmalloc.h ! - new file, extern declarations for allocation wrapper functions for ! use by the shell (and others, I guess) ! ! xmalloc.[ch] ! - wrapper functions for xmalloc, xfree, xrealloc (sh_ prefixed) that ! pass cpp line number information through to the malloc functions, ! if USING_BASH_MALLOC is defined ! 9/5 --- ! lib/malloc/gmalloc.c ! - removed; no longer part of distribution ! lib/malloc/Makefile.in ! - removed references to gmalloc.[co] ! configure.in, doc/bashref.texi ! - removed references to `--with-glibc-malloc' configure option ! {configure,Makefile}.in ! - changed the way bash malloc is configured into the Makefile, making ! it more like how readline is configured. If the bash malloc is ! not configured in, nothing in lib/malloc will be built ! 9/6 ! --- ! lib/malloc/imalloc.h ! - new file, some internal malloc definitions ! lib/malloc/mstats.h ! - new file, definitions for malloc statistics structs and functions ! lib/malloc/trace.c ! - new file, malloc tracing functions (currently just print messages ! to stderr), code is #ifdef MALLOC_TRACE ! lib/malloc/stats.c ! - new file, moved malloc stats code from malloc.c to here ! lib/malloc/malloc.c ! - moved some definitions to imalloc.h ! - moved stats code to stats.c ! - malloc tracing calls added to internal_{malloc,realloc,free}, all ! #ifdef MALLOC_TRACE ! lib/malloc/Makefile.in, Makefile.in ! - added {imalloc,mstats}.h, {trace,stats}.c ! parse.y ! - changed decode_prompt_string to save and restore $? ! (last_command_exit_value) around calls to expand_prompt_string(), ! so command substitutions in PS1, etc. don't change $? ! {array,subst}.c ! - a couple more arrayind_t fixes from Paul Eggert ! configure.in ! - remove redundant check for wait3(2) ! redir.h ! - fixed a typo (stdin_redirs -> stdin_redirects) ! 9/10 ! ---- ! execute_cmd.c ! - remove check for \n and \r from WHITESPACE macro, since those ! chars are not whitespace as returned by the whitespace(c) macro ! - getinterp now takes a `char *' as first arg, not unsigned char * ! - execute_shell_script now takes a `char *' as first arg, not ! unsigned char * ! - fix typo in forward declaration for `initialize_subshell' ! ! general.[ch] ! - check_binary_file now takes a (char *) argument, not unsigned char * ! - pass unsigned char to isspace and isprint because of ISO C fuckup ! - bash_tilde_expand now takes a `const char *' as its argument ! builtins/evalfile.c, shell.c ! - buffer passed to check_binary_file is char, not unsigned char ! parse.y ! - fix extern declaration for yyerror() ! - yyerror now takes a `const char *' as first arg ! {error,jobs}.c ! - fixes to printf-style functions to handle pids wider than an int ! lib/readline/{isearch,vi_mode}.c ! - fix call to rl_message in rl_display_search (remove extra arg) ! variables.c ! - fix missing argument to builtin_error in make_local_variable ! builtins/getopts.def ! - since getopts takes no options, change while loop calling ! internal_getopts to a simple `if' check ! builtins/printf.def ! - since printf takes no options, change while loop calling ! internal_getopts to a simple `if' check ! lib/readline/bind.c ! - remove _SET_BELL macro, expand code inline ! lib/readline/input.c ! - change _rl_input_available to use either select or FIONREAD, ! but not both ! lib/readline/readline.c ! - fix rl_digit_loop to remove unreachable code at end of loop ! {bashhist,bashline,expr,jobs,redir,shell}.c, builtins/fc.def, lib/sh/snprintf.c ! - bracket unused functions with #ifdef INCLUDE_UNUSED/#endif ! - remove some unused variables execute_cmd.c ! - remove #ifdef'd code that allowed `return' to terminate a select ! statement ! expr.c ! - remove some extraneous tests from strlong() ! array.h ! - arrayind_t is now a long, since shell arithmetic is performed as ! longs ! - remove second declaration of new_array_element ! builtins/printf.def ! - in mklong, xrealloc cannot return NULL, so don't check for it ! - remove some #if 0 code ! - fix core dump triggered by a format specification with more than ! one `*' ! - remove `foundmod', since its value mirrors `modchar != 0' ! - include "common.h" for builtin_{error,usage} declarations ! Makefile.in,builtins/Makefile.in ! - updated some dependencies due to new include files ! pcomplete.c ! - include "execute_cmd.h" for declaration of execute_shell_function ! arrayfunc.c ! - include for printf ! - include "builtins/common.h" for builtin_error declaration ! builtins/evalstring.c ! - include "../trap.h" for run_trap_cleanup declaration ! builtins/help.def ! - include "common.h" instead of locally declaring builtin_error ! and builtin_usage ! error.h ! - add extern declaration for itrace() ! - add prototype to extern declaration of get_name_for_error ! - file_error now takes a `const char *' as first argument ! externs.h ! - added prototype for sh_setlinebuf declaration, bracketed with ! NEED_SH_SETLINEBUF_DECL so we don't need stdio.h everywhere ! - add extern declaration for parse.y:return_EOF() ! shell.c ! - add NEED_SH_SETLINEBUF_DECL before including shell.h ! lib/readline/callback.c ! - include or "ansi_stdlib.h" for abort declaration ! quit.h ! - remove declaration of throw_to_top_level ! subst.c ! - remove unused extern declaration for getopts_reset ! lib/sh/netopen.c ! - include for legal_number, etc. ! - add prototype for inet_aton extern declaration ! lib/sh/clock.c ! - include for __P declaration ! - add extern declaration for get_clk_tck ! support/mkversion.sh ! - changed so that extern function declarations for functions in ! version.c (moved from externs.h) are in the generated version.h ! shell.h ! - include version.h ! version.c ! - various `char *' version variables are now `const char *' ! general.h ! - add prototype for same_file, bracketed with _POSIXSTAT_H ! #ifdef, since that's what include/posixstat.h defines ! builtins/common.[ch] ! - _evalfile, maybe_execute_file, source_file, and fc_execute_file ! now take a `const char *' as their first argument ! eval.c ! - removed extern declaration of yyparse; it's in externs.h ! parse.y ! - added prototypes to static forward function declarations ! - changed local `all_digits' variable in read_token_word () to ! all_digit_token to avoid clash with all_digits() function in ! general.c ! {bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c ! - added prototypes for static function declarations ! shell.h ! - add extern declarations for interactive, interactive_shell, ! changed c files with extern declarations ! pcomplete.c ! - changed it_init_aliases to avoid shadowing global variable ! `aliases' ! bashline.c,pathexp.c,general.h ! - sh_ignore_func_t is now a pointer to a function taking a ! `const char *'; users changed ! ! configure.in ! - test for config.h.in ! - add #undef HAVE_STRINGS_H ! bashansi.h ! - change like recommended in autoconf manual ! 9/11 ---- ! [a date which will live in infamy. prayers for the victims.] ! execute_cmd.c ! - don't use an absolute index into abuf in mkfmt, use ! sizeof(abuf) to compute last index ! builtins/common.c ! - fix read_octal to do a better job of detecting overflow while ! iterating through the string ! builtins/umask.def ! - change octal-print mode to print 4 digits, like other shells ! - cast umask to unsigned long to avoid problems on systems where ! it's wider than an int (POSIX doesn't guarantee that mode_t is ! no wider than an int, but real-world systems use int) ! builtins/printf.def ! - mklong can never return NULL (it uses xrealloc), so the mainline ! doesn't need to check for NULL returns ! - new function, getldouble (long double *), to get long doubles ! - mklong now takes a `char *' as its second argument, the modifier(s) ! to use ! - changed use of `modchar' to handle more than a single modifier ! character ! - changed to handle `long double' and `L' formats better, rather ! than discarding long double information ! - since printf now follows the POSIX.2 rules for conversion errors, ! we can dispense with the status returns from the get* functions ! - make the get* functions as similar in structure as possible, ! removing type casts, etc. ! ! lib/sh/timeval.c,execute_cmd.c ! - change some instances of `long' to `time_t', for systems where ! a time_t is bigger than a long ! ! jobs.c ! - include "posixtime.h" instead of ! ! config.h.in ! - add defines for HAVE_DECL_CONFSTR, HAVE_DECL_STRTOLD, ! HAVE_DECL_SBRK, HAVE_DECL_PRINTF ! - remove defines for SBRK_DECLARED and PRINTF_DECLARED ! - add _GNU_SOURCE define ! ! configure.in ! - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf ! - remove call to BASH_FUNC_SBRK_DECLARED ! - remove call to BASH_FUNC_PRINTF ! xmalloc.c, lib/malloc/malloc.c ! - change check of SBRK_DECLARED to HAVE_SBRK_DECL ! print_cmd.c ! - change PRINTF_DECLARED to HAVE_DECL_PRINTF ! builtins/evalstring.c, builtins/common.h ! - parse_and_execute now takes a `const char *' as its second argument ! input.h,parse.y ! - with_input_from_* functions now take a `const char *' as their ! second argument ! - init_yy_io now takes a `const char *' as its fourth argument ! parse.y,externs.h ! - parse_string_to_word_list now takes a `const char *' as its second ! argument ! tests/builtins.right ! - change output to account for extra digit in umask output ! pcomplib.c ! - free_progcomp now takes a PTR_T argument ! builtins/bashgetopt.h ! - include ! - add prototypes to extern declarations ! builtins/shopt.def ! - add prototypes to static function declarations ! builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c ! - include for isdigit macro (referenced by `digit(x)') ! lib/readline/complete.c ! - added more static function declarations with prototypes ! 9/12 ! ---- ! lib/sh/tmpfile.c ! - use `^' instead of `*' in sh_mktmpname to make filenames a bit ! more random ! include/stdc.h,lib/readline/rldstdc.h ! - add __attribute__ definition ! builtins/common.h ! - add printf __attribute__ to declaration of builtin_error ! error.h ! - add printf __attribute__ to declaration of programming_error, ! report_error, parser_error, fatal_error, sys_error, internal_error, ! internal_warning ! lib/readline/readline.h ! - add printf __attribute__ to declaration of rl_message ! pcomplete.c ! - add printf __attribute__ to declaration of debug_printf ! print_cmd.c ! - add printf __attribute__ to declarations of cprintf, xprintf ! include/chartypes.h ! - new file, includes and defines macros that check for ! safe (ascii) arguments before calling the regular ctype macros ! ! {alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c ! parse.y ! builtins/{bashgetopt,common}.c ! builtins/{fc,printf,umask,wait}.def ! lib/glob/strmatch.c ! lib/sh/{oslib,pathcanon,pathphys,snprintf,strcasecmp,strindex,stringvec,strtod,strtol,strtrans}.c ! examples/loadables/{head,sleep}.c ! - include "chartypes.h" or instead of ! Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in ! - update dependencies to include chartypes.h ! lib/sh/inet_aton.c ! - use `unsigned char' instead of `char' to pass to ctype.h functions ! lib/sh/netopen.c ! - check for '0' <= host[0] <= '9' in _getaddr instead of using ! isdigit ! subst.c,lib/sh/shquote.c ! - change array subscripts into sh_syntaxtab from `char' to ! `unsigned char' ! ! {alias,bashline,execute_cmd,expr,general,subst}.c, parse.y ! builtins/{fc,printf,umask,wait}.def builtins/{bashgetopt,common}.c ! lib/sh/{pathcanon,pathphys,snprintf,strcasecmp,strindex,strtod,strtol,strtrans}.c ! examples/loadables/{head,sleep}.c ! - change to use some of the new macros in chartypes.h ! - remove old local macro definitions now provided by chartypes.h ! general.h ! - remove definition of isletter, ISOCTAL, digit, digit_value ! - change legal_variable_starter and legal_variable_char to use ! chartypes.h macros ! - change ABSPATH to use chartypes.h macros ! lib/readline/util.c ! - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define ! function replacements for macros in chardefs.h ! lib/readline/chardefs.h ! - added some of the same macros as in chartypes.h ! - change _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p, ! _rl_to_upper, _rl_to_lower to use new IS* macros ! - added _rl_isident macro from vi_mode.c:isident ! lib/readline/{bind,complete,nls}.c ! - change to use some of the new macros from chardefs.h ! lib/readline/vi_mode.c ! - isident -> _rl_isident ! - remove local defines of macros in chardefs.h ! lib/sh/strtol.c ! - updated to new version, modified from glibc 2.2.4 and sh-utils-2.0. ! This one can do strtoll and strtoull, if necessary ! 9/13 ---- ! builtins/ulimit.def ! - changed get_limit so it retrieves both hard and soft limits ! instead of one or the other ! - changed callers of get_limit ! - changed getmaxvm to take soft limit, hard limit as arguments ! - changed getmaxuprc to just take a single argument, the value ! - changed calls to printone() to pass soft limit or hard limit ! depending on `mode' instead of using old current_limit variable ! - moved check for out-of-range limits in ulimit_internal into the ! block that converts a string argument to a value of type rlim_t ! - changed RESOURCE_LIMITS struct to break the description into a ! description string and separate scale factor string ! - changed print_all_limits to print a single error message if ! get_limit fails, including limits[i].description now that the ! scale factor has been removed from the description string ! - removed DESCFMT define, since it's now used only in printone() ! - changed printone to print the option character associated with a ! particular limit if we're printing multiple limits ! - changed calls to builtin_error to print the description associated ! with a limit if setting or getting the limit fails ! - added support for new POSIX 1003.1-200x rlim_t values: ! RLIM_SAVED_CUR and RLIM_SAVED_MAX, which expand to the current ! soft and hard limits, whatever they are ! - changed printone to print `hard' or `soft' if the current limit is ! RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively ! - changed ulimit_internal to handle new `hard' and `soft' arguments ! - changed help text do describe the special limit arguments `hard', ! `soft', and `unlimited' ! ! doc/{bash.1,bashref.texi} ! - documented new `hard' and `soft' limit arguments to `ulimit' ! ! hashlib.[ch] ! - find_hash_item now takes a `const char *' is its first argument ! - hash_string now takes a `const char *' is its first argument ! - remove_hash_item now takes a `const char *' as its first argument ! pcomplib.c ! - removed cast from first argument to find_hash_item in find_compspec ! general.[ch] ! - absolute_program now takes a `const char *' as its argument ! - absolute_pathname now takes a `const char *' as its argument ! lib/glob/glob.[ch] ! - glob_pattern_p now takes a `const char *' as its argument ! bashline.c ! - removed cast from first argument to absolute_program in ! command_word_completion_function ! - removed cast from first argument to glob_pattern_p in ! attempt_shell_completion ! ! findcmd.[ch] ! - find_absolute_program, find_user_command, find_path_file, ! search_for_command, user_command_matches now take a ! `const char *' as their first argument ! - file_status, executable_file, is_directory, executable_or_directory ! now take a `const char *' as their argument ! - _find_user_command_internal, find_user_command_internal, ! find_user_command_in_path ! ! lib/sh/makepath.c, externs.h ! - changed sh_makepath so it takes `const char *' for its first ! two arguments ! ! hashcmd.[ch] ! - find_hashed_filename now takes a `const char *' as its first arg ! - remove_hashed_filename now takes a `const char *' as its first arg ! variables.[ch] ! - new_shell_variable, var_lookup, shell_var_from_env_string, ! find_name_in_env_array, bind_function, makunbound, ! bind_name_in_env_array, bind_tempenv_variable, bind_variable ! now take a `const char *' as their first arg ! - find_function, make_new_variable, find_tempenv_variable, ! find_variable_internal, find_variable, set_func_read_only, ! set_func_auto_export, all_variables_matching_prefix, assign_in_env, ! assignment, kill_local_variable, make_local_variable, unbind_variable ! now take a `const char *' as their arg ! - mk_env_string now takes `const char *' arguments ! arrayfunc.[ch] ! - skipsubscript now takes a `const char *' as its argument ! 9/17 ! ---- ! lib/readline/complete.c ! - attempt to preserve case of what the user typed in ! compute_lcd_of_matches if we're ignoring case in completion ! builtins/{let,pushd}.def,{execute_cmd,expr}.c ! - change some 0L constants to 0 and let the compiler sort it out ! 9/18 ---- ! lib/malloc/alloca.c ! - alloca now takes a `size_t' argument ! include/memalloc.h ! - if we're providing an extern function declaration for alloca, ! use `void *' and prototype if __STDC__ is defined ! - if HAVE_ALLOCA_H is defined, but C_ALLOCA is defined, don't ! define HAVE_ALLOCA ! 9/19 ---- subst.c ! - do_assignment_internal, do_assignment, and do_assignment_no_expand ! now take a `const char *' as their first argument ! general.h ! - a `sh_assign_func_t' is now a function taking a `const char *' and ! returning int ! hashcmd.c ! - free_filename_data now takes a `PTR_T' argument to agree with the ! typedef for `sh_free_func_t' ! lib/sh/snprintf.c ! - use TYPE_MAXIMUM define like strtol.c instead of huge constants ! 9/20 ---- ! lib/sh/snprintf.c ! - don't bother to compile the bulk of the body unless HAVE_SNPRINTF ! or HAVE_ASPRINTF is not defined ! 9/24 ---- ! flags.c ! - ignore `set -n' if the shell was started interactively ! lib/readline/readline.c ! - initialize readline_echoing_p to 0; let the terminal-specific code ! in rltty.c set it appropriately ! lib/malloc/malloc.c ! - changed internal_memalign() slightly to avoid compiler warnings about ! negating an unsigned variable (-alignment -> (~alignment + 1)) ! 9/27 ---- ! lib/readline/readline.c ! - changed rl_newline to set _rl_history_saved_point appropriately ! for the {previous,next}_history code ! lib/readline/rlprivate.h ! - extern declaration for _rl_history_preserve_point ! lib/readline/bind.c ! - new bindable variable, `history-preserve-point', sets value of ! _rl_history_preserve_point ! 10/1 ! ---- ! lib/malloc/table.c ! - new file, with a map of allocated (and freed) memory for debugging ! multiple frees, etc. Indexed by hash on values returned by ! malloc(); holds size, file and line number info for last alloc or ! free and a couple of statistics pointers ! lib/malloc/malloc.c ! - a few cleanups; added calls for registering allocations and frees ! if MALLOC_REGISTER is defined ! - replaced MALLOC_RETURN with explicit MALLOC_NOTRACE define ! - reordered fields in `struct...minfo' in `union mhead' to restore ! eight-byte alignment ! - added explicit checks for underflow in free and realloc since ! checking mh_magic2 is not sufficient to detect everything (it's ! no longer the last field in the struct, and thus not the bytes ! immediately preceding what's returned to the user) ! - new function, xbotch, for printing file and line number info for ! the failed assertion before calling botch() (programming_error()) ! ! configure.in ! - replaced call to BASH_C_LONG_LONG with call to ! AC_CHECK_TYPES([long long]) ! - moved the C compiler tests before the tests for various ! system types, so we can know whether we have `long long' ! before testing for 64-bit types ! - if we have `long long', check for sizeof(long long) and save value ! aclocal.m4 ! - changed BASH_TYPE_BITS64_T to check `long long' before `long', but ! after `double' ! 10/2 ! ---- ! lib/malloc/malloc.c ! - made malloc and realloc both agree on the rounding for a request of ! size N (round up to nearest multiple of 8 after adjusting for ! malloc overhead); uses new ALLOCATED_BYTES macro ! - realloc and free now use new IN_BUCKET macro for underflow checks ! execute_cmd.c ! - fixed time_command() to use `time_t' instead of `long' to hold ! time stamps ! lib/sh/clock.c ! - clock_t_to_secs now takes a `time_t *' second argument ! - fixed print_clock_t to call clock_t_to_secs with right arguments ! lib/sh/timeval.c ! - fixed print_timeval to make `minutes' a `long' and make its ! structure identical to print_clock_t ! redir.c ! - changed redirection_error to check for EBADF and use the file ! descriptor being redirected from in the error message if it ! is >= 0 ! Makefile.in ! - changed release status to `beta1' ! lib/glob/collsyms.h ! - added a few ASCII symbols to the posix_collsyms array ! 10/3 ! ---- ! aclocal.m4 ! - fixed typo in BASH_TYPE_BITS64_T ! configure.in ! - added check for unsigned chars with AC_C_CHAR_UNSIGNED ! config.h.in ! - added PROTOTYPES and __CHAR_UNSIGNED__ #defines ! general.h ! - if CHAR_MAX is not define by , provide a definition ! builtins/printf.def ! - change tescape() to mask \0 and \x escape sequences with 0xFF ! - change tescape() to process at most two hex digits after a `\x' ! lib/sh/strtrans.c ! - change strtrans() to mask \0 and \x escape sequences with 0xFF ! - change strtrans() to process at most two hex digits after a `\x'. ! This affects `echo -e' and $'...' processing ! lib/readline/bind.c ! - changed rl_translate_keyseq() to process at most two hex digits ! after a `\x' ! lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 ! - changed documentation for key binding escape sequences to specify ! that at most two hex digits after \x are translated ! - changed documentation for key binding to specify that the result ! of \nnn or \xhh escapes is an eight-bit value, not just ASCII ! ! doc/{bash.1,bashref.texi} ! - changed documentation of $'...' to specify that at most two hex ! digits after \x are translated ! - changed `echo' documentation to specify that at most two hex ! digits after \x are translated ! - changed documentation for `echo' and $'...' to specify that the ! result of \nnn or \xhh escapes is an eight-bit value, not just ASCII ! 10/4 ---- ! lib/malloc/malloc.c ! - changed interface for xbotch to pass memory address and error code ! as two additional arguments ! - call mregister_describe_mem from xbotch to get the last allocation ! or free before the botch ! configure.in ! - call AC_CHECK_DECLS([strsignal]) ! config.h.in ! - add HAVE_DECL_STRSIGNAL ! siglist.h ! - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL ! 10/5 ! ---- ! support/texi2html ! - upgraded to version 1.64 ! 10/9 ---- ! aclocal.m4 ! - added check for `long long' to BASH_TYPE_PTRDIFF_T configure.in ! - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ ! aclocal.m4 ! - replaced body of BASH_STRUCT_TERMIOS_LDISC with call to ! AC_CHECK_MEMBER(struct termios.c_line, ...) ! - replaced body of BASH_STRUCT_TERMIO_LDISC with call to ! AC_CHECK_MEMBER(struct termios.c_line, ...) ! [bash-2.05a-beta1 frozen] ! 10/10 ! ----- ! lib/sh/snprintf.c ! - fixed exponent() to not smash the trailing zeros in the fraction ! when using %g or %G with an `alternate form' ! - fixed exponent() to handle the optional precision with %g and %G ! correctly (number of significant digits before the exponent) ! 10/11 ! ----- ! expr.c ! - fixed strlong() to correct the values of `@' and `_' when ! translating base-64 constants (64#@ == 62 and 64#_ == 64), for ! compatibility with ksh ! lib/sh/itos.c ! - added a slightly more flexible fmtlong() function that takes a ! base argument and flags (for future use) ! - rewrote itos and inttostr in terms of fmtlong ! ! lib/sh/fmtulong.c ! - new file, converts unsigned long to string. hooks for `unsigned ! long long' in the future. unused as yet ! 10/15 ! ----- ! lib/readline/rltty.c ! - change the SET_SPECIAL macro to avoid possible (but highly ! unlikely) negative array subscripts ! error.h ! - add __attribute__ to extern declaration of itrace (even though the ! function isn't defined in released versions of bash) ! bashansi.h ! - include if HAVE_STRINGS_H is defined, to get any extra ! function declarations provided therein ! copy_cmd.c ! - fix typo in forward declaration for copy_arith_for_command ! lib/malloc/stats.c ! - make the accumulators in _print_malloc_stats be `unsigned long' ! instead of `int' ! externs.h, sig.h ! - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level ! declarations ! lib/sh/mailstat.c, support/bashversion.c ! - include for some string function declarations ! ! lib/malloc/shmalloc.h ! - added extern declarations of functions that do malloc debugging ! ! lib/readline/{isearch,readline,vi_mode}.c ! - make sure we index into _rl_keymap with a non-negative index parse.y ! - make sure we index into sh_syntaxtab with a non-negative index ! ! lib/readline/vi_mode.c ! - bound the vi_mark_chars array with the number of characters between ! 'a' and 'z' rather than using a fixed amount ! - don't use _rl_lowercase_p when deciding whether the char read by ! rl_vi_set_mark is a valid mark; just use 'a' <= char <= 'z' lib/readline/chardefs.h ! - conditionally include memory.h and strings.h as in general.h ! - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software ! - add defines for ISPRINT(c), ISLOWER(c) and ISUPPER(c) ! - fix defines for _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p, ! _rl_pure_alphabetic, ALPHABETIC, _rl_to_upper, _rl_to_lower, ! and _rl_isident to work on systems with signed chars ! ! include/chartypes.h ! - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software ! ! lib/sh/{strcasecmp,strtod,strtol}.c ! - don't pass possibly-negative characters to tolower() or toupper() ! ! lib/glob/strmatch.c ! - don't bother testing for isupper in FOLD; rely on TOLOWER macro ! from to do it ! - don't use local definitions of isblank, et al.; rely on macros ! from ! ! lib/readline/{display,readline}.c, mksyntax.c ! - use new ISPRINT macro instead of isprint() ! ! builtins/{kill.def,mkbuiltins.c},{error,execute_cmd,jobs,nojobs,subst}.c ! - don't assume that a pid_t fits into an int for printing and other ! uses ! variables.[ch] ! - the unused put_gnu_argv_flags_into_env now takes a `long' pid ! argument ! configure.in, config.h.in ! - call AC_STRUCT_ST_BLOCKS, define HAVE_STRUCT_STAT_ST_BLOCKS if found ! - check for strtoull(), define HAVE_STRTOULL if found ! - check for uintmax_t, define to `unsigned long' if not found ! ! lib/sh/mailstat.c ! - don't use st_blocks member of struct stat unless ! HAVE_STRUCT_STAT_ST_BLOCKS is defined; otherwise use the st_nlink ! field to return the total number of messages in a maildir-style ! mail directory ! ! general.h,{alias,expr,general,subst,variables}.c ! builtins/{printf,read}.def ! lib/readline/{bind,complete,nls}.c ! lib/sh/{pathcanon,pathphys,shquote,snprintf,strindex,strtod,strtol,strtrans}.c ! - cast args to ctype macros to unsigned char for systems with signed ! chars; other fixes for signed chars ! lib/sh/{fmtullong,strtoull.c} ! - new files, more support for `long long' ! Makefile.in, lib/sh/Makefile.in ! - make fmtullong.o and strtoull.o part of libsh ! ! lib/sh/itos.c ! - remove local copy of fmtlong; use fmtulong instead ! - new functions: uitos, uinttostr work on `unsigned long' ! lib/sh/snprintf.c ! - fixes to make `unsigned long long' work (%llu) ! - fixes to make unsigned formats not print the sign when given ! an unsigned long that is greater than LONG_MAX ! externs.h ! - extern declarations for fmtulong, fmtulloing, strtoull ! - extern declarations for uitos, uinttostr ! 10/16 ! ----- ! configure.in ! - move header checks before function checks ! - move c compiler tests before header checks ! - check for with BASH_HEADER_INTTYPES ! - change type checks for intmax_t, uintmax_t to not attempt to ! include ! - check for strtoimax, strtoumax, strtoll, strtol, strtoull, strtoul ! with BASH_CHECK_DECL (for declarations in header files) and ! AC_REPLACE_FUNCS (for availability and LIBOBJS substitution) ! - remove check for have_long_long around sizeof check for long long ! (since autoconf will give it a size of 0 if the type isn't found) ! ! config.h.in ! - add a define for HAVE_INTTYPES_H ! - add a define for HAVE_UNSIGNED_LONG_LONG ! - add defines for HAVE_STRTOIMAX, HAVE_STRTOUMAX, HAVE_STRTOLL ! ! aclocal.m4 ! - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS ! on ; separate so it can be AC_REQUIREd ! - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE ! - include in BASH_CHECK_TYPE if HAVE_INTTYPES_H is ! defined ! - change AC_DEFINE to AC_DEFINE_UNQUOTED in BASH_CHECK_TYPE ! - new `long long' checking macros: BASH_TYPE_LONG_LONG and ! BASH_TYPE_UNSIGNED_LONG_LONG ! - new BASH_CHECK_DECL ! lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in ! - new files ! externs.h ! - extern declarations for strtoll, strtoimax, strtoumax ! lib/malloc/alloca.c ! - include for size_t ! builtins/printf.def ! - new functions: getllong, getullong, getintmax, getuintmax; return ! long long, unsigned long long, intmax_t, uintmax_t respectively ! - builtin printf now handles `ll' and `j' length modifiers directly ! lib/sh/Makefile.in ! - use LIBOBJS to decide whether or not the strto* functions are ! needed ! 10/17 ! ----- ! configure.in ! - call AC_REPLACE_FUNCS(rename) ! - move getcwd, strpbrk, strcasecmp, strerror, strtod ! from AC_CHECK_FUNCS to AC_REPLACE_FUNCS ! - only call BASH_FUNC_GETCWD if $ac_func_getcwd == "yes" ! - call BASH_CHECK_SYS_SIGLIST ! - if we don't have vprintf but have _doprnt, call AC_LIBOBJ(vprint) ! lib/sh/Makefile.in ! - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror, ! strtod, vprint from OBJECTS; picked up from LIBOBJS aclocal.m4 ! - change BASH_FUNC_GETCWD to call AC_LIBOBJ(getcwd) if the libc ! getcwd(3) calls popen(3) ! - change BASH_FUNC_INET_ATON to call AC_LIBOBJ(inet_aton) if it's ! not found in libc or as a #define even with the special includes ! - BASH_KERNEL_RLIMIT_CHECK -> BASH_CHECK_KERNEL_RLIMIT ! - BASH_DEFAULT_MAILDIR -> BASH_SYS_DEFAULT_MAILDIR ! - BASH_JOB_CONTROL_MISSING -> BASH_SYS_JOB_CONTROL_MISSING ! - BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS ! - BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE ! - BASH_DUP2_CLOEXEC_CHECK -> BASH_FUNC_DUP2_CLOEXEC_CHECK ! - BASH_PGRP_SYNC -> BASH_SYS_PGRP_SYNC ! - BASH_RLIMIT_TYPE -> BASH_TYPE_RLIMIT ! - BASH_FUNC_PRINTF -> BASH_DECL_PRINTF ! - BASH_FUNC_SBRK_DECLARED -> BASH_DECL_SBRK ! - BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T ! - BASH_CHECK_SOCKLIB -> BASH_CHECK_LIB_SOCKET ! - new macro, BASH_CHECK_SYS_SIGLIST, encapsulates all the checks for ! sys_siglist, _sys_siglist, and strsignal(), sets SIGLIST_O to ! siglist.o if appropriate ! ! Makefile.in ! - use SIGLIST_O variable to decide whether or not we need siglist.o ! ! {execute_cmd,subst}.c ! - change a couple of instances of ISDIGIT to DIGIT, where we really, ! really only want ascii digits ! ! ansi_stdlib.h ! - don't need a declaration for atol() ! ! 10/18 ! ----- ! aclocal.m4 ! - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support ! for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT ! if successful ! ! configure.in ! - call AC_CHECK_FUNCS for isascii ! - call BASH_FUNC_PRINTF_A_FORMAT ! ! config.h.in ! - add a define for HAVE_ISASCII ! - add a define for HAVE_PRINTF_A_FORMAT ! ! lib/sh/snprintf.c ! - for long double output, fall back to sprintf using ldfallback() ! function for floating point formats ! - support %a, %A using dfallback() or ldfallback() if ! HAVE_PRINTF_A_FORMAT is defined ! - fix bug in vasprintf that returned wrong value in its first ! argument if the buffer holding the result string got reallocated ! - fixed PUT_CHAR macro to increment the counter even if we've ! exceeded the buffer size, for the return value from ! vsnprintf/snprintf ! - fix vsnprintf_internal to not use counter < length as a loop ! condition, but always process the entire format string (for ! the return value from vsnprintf/snprintf) ! builtins/printf.def ! - support %a, %A if HAVE_PRINTF_A_FORMAT is defined ! include/typemax.h ! - new file, with the TYPE_MAXIMUM stuff that's duplicated in several ! files in lib/sh ! lib/sh/{fmtulong,strtol,snprintf}.c ! - include instead of having the definitions in each file ! lib/sh/Makefile.in ! - updated dependencies for typemax.h ! 10/22 ! ----- ! configure.in ! - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines ! in chartypes.h ! config.h.in ! - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT} ! include/chartypes.h, lib/glob/strmatch.c, lib/readline/chardefs.h ! - don't redefine some is* ctype macros/functions if HAVE_ISXXX is ! defined (meaning that an appropriate function, but not a macro, ! exists) ! lib/sh/strtrans.c ! - new function, ansic_shouldquote, returns 1 if argument string ! contains non-printing chars that should be quoted with $'...' ! externs.h ! - new declaration for ansic_shouldquote() ! variables.c ! - change print_var_value to ansi C quote the string if we're not in ! posix mode and the variable's value contains non-printing chars, ! to use the regular shell single quoting if the value contains ! shell meta-characters, and to just output the string otherwise ! lib/sh/shquote.c ! - add `break' to `case '~':' to avoid fallthrough and extra test ! doc/bashref.texi ! - note that in POSIX mode, `set' displays variable values that ! include nonprinting characters without quoting, unless they ! contain shell metacharacters ! builtins/printf.def, lib/sh/snprintf.c ! - handle `F' conversion specifier as equivalent to 'f' ! ! parse.y, {nojobs,variables}.c ! - a couple of cleanups for when building a minimal configuration ! ! nojobs.c ! - new function: stop_making_children(), just sets ! already_making_children to 0 (like stop_pipeline) ! ! subst.c ! - call stop_making_children from subst.c:command_substitute if ! JOB_CONTROL is not defined. This fixes the bug where the wrong ! process is waited for (and its status returned) when using ! command substitution in a null command in a shell function builtins/printf.def ! - new variable `tw' used to keep track of the total number of ! characters written by a single call to `printf' -- to be ! used for the `%n' conversion, which will be added later. It ! gets reset each time we reuse the format string, which is what ! ksh93 seems to do + 10/23 + ----- variables.c ! - new function, bind_var_to_int (char *var, long val) ! variables.h ! - extern declaration for bind_var_to_int ! lib/sh/netopen.c ! - use gai_strerror() for error messages when getaddrinfo() fails ! - use PF_INET if DEBUG is defined, since IPv6 doesn't work for me ! Makefile.in ! - pass DEBUG=${DEBUG} down to makes in some subdirectories ! {builtins,lib{glob,sh}}/Makefile.in ! - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile ! builtins/printf.def ! - added support for %n format conversion char (number of chars printed ! so far from current format string) ! ! 10/24 ----- ! variables.c ! - if posixly_correct is set, the default value of $MAILCHECK is 600 ! - use legal_number instead of atoi in adjust_shell_level ! - treat non-numeric assignments to SECONDS as 0 in assign_seconds ! - new function, init_funcname_var; sets FUNCNAME as a dynamic variable ! if it's not set in the initial environment ! - new function, init_groups_var; sets GROUPS as a dynamic array ! variable if it's not set in the initial environment ! - new function, init_dirstack_var; sets DIRSTACK as a dynamic array ! variable if it's not set in the initial environment ! - new function, init_seconds_var; sets SECONDS as a dynamic ! variable using any valid integer value in the initial environment ! as the initial value, as if an assignment had been performed ! - call init_funcname_var, init_groups_var, init_dirstack_var, ! init_seconds_var from initialize_dynamic_variables ! - non-numeric values assigned to LINENO are treated as 0 ! - change initialize_shell_variables to not auto-export PATH or TERM ! - change set_home_var to not auto-export HOME ! - change set_shell_var to not auto-export SHELL ! - broke the code that sets HOSTNAME, HOSTTYPE, MACHTYPE, OSTYPE ! out into a separate function, set_machine_vars; none of those ! variables are auto-exported ! - bash no longer un-exports SSH_CLIENT or SSH2_CLIENT ! shell.c ! - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if ! SSH_SOURCE_BASHRC is defined in config-top.h ! config-top.h ! - added a commented-out definition for SSH_SOURCE_BASHRC ! 10/25 ----- ! Makefile.in ! - changed RELSTATUS to `rc1' (release candidate 1) ! 10/29 ----- ! locale.c ! - fixed an `=' vs. `==' typo in set_locale_var when parsing ! LC_NUMERIC ! doc/{bash.1,bashref.texi} ! - document what bash does with $POSIXLY_CORRECT ! doc/builtins.1 ! - some updates ! builtins/psize.sh ! - some mktemp(1) changes ! lib/readline/readline.c ! - change rl_backward to check for rl_point < 0 and reset to 0 if so ! lib/readline/util.c ! - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined ! lib/readline/rlprivate.h ! - remove extern declaration of _rl_strpbrk ! lib/readline/rldefs.h ! - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise ! add extern declaration of _rl_strpbrk from rlprivate.h ! {mailcheck,shell,variables}.c ! - make sure to include posixtime.h to get any prototype for time(3) ! in scope ! {array,eval,execute_cmd,mksyntax,subst}.c, parse.y ! builtins/common.c ! lib/sh/pathcanon.c ! - a few changes as the result of `gcc -Wall' patches from solar ! designer ! builtins/read.def, parse.y ! - change some calls to free() to xfree() ! builtins/set.def ! - make sure unset_builtin() resets unset_array to 0 each time through ! the loop, because it's set (and used) depending on the current ! argument ! shell.h ! - new define, USE_VAR, to force the compiler to not put a particular ! variable in a register -- helpful if registers are not restored ! by setjmp/longjmp ! ! builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c ! - use USE_VAR for some variables ! subst.c ! - fixed a case in expand_word_internal where a NULL pointer could ! have been passed to free() (though free() should ignore it) ! - fixed a case at the end of expand_word_internal where LIST could ! have been used uninitialized (it makes gcc happy, though it ! doesn't happen in practice) ! test.c ! - give test_syntax_error(), beyond(), and integer_expected_error() ! the `__noreturn__' attribute for gcc ! unwind_prot.c ! - in clear_unwind_protect_list(), convert `flags' to `long' (via ! assignment to a `long' variable) before casting to `char *', in ! case pointers and longs are 64 bits and ints are 32 (makes no ! difference on 32-bit machines) ! 10/30 ----- ! print_cmd.c ! - fixed cprintf to avoid gcc warning about assigning const pointer ! to non-const (discarding type qualifier) ! {make_cmd,pcomplete,test}.c,parse.y ! - some minor changes to shut up gcc warnings ! lib/sh/tmpfile.c ! - fixed sh_mktmpfp to avoid file descriptor leaks in the case that ! sh_mktmpfd succeeds but fdopen fails for some reason ! - change sh_mktmpfd to use the same scheme for computing `filenum' ! as sh_mktmpname ! - change get_sys_tmpdir to prefer P_tmpdir if P_tmpdir is defined ! - changed sh_mktmpname and sh_mktmpfd to avoid trying to assign to ! `nameroot' if `nameroot == 0' (duh) ! - add code to sh_mktmpfd to use mkstemp(3) if USE_MKSTEMP is defined ! - add code to sh_mktmpname to use mktemp(3) if USE_MKTEMP is defined ! ! support/{fixlinks,mkclone} ! - use mktemp if it's available for the symlink test ! - use $TMPDIR instead of hardcoding /tmp; default to /tmp ! - use a better filename for the symlink test instead of `z' ! support/bashbug.sh ! - more changes inspired by a patch from solar designer ! lib/malloc/Makefile.in ! - new target `alloca', which builds libmalloc.a with alloca.o only ! (for systems without alloca that are configured --without-bash-malloc) ! configure.in ! - if we don't have a working alloca and are not configured to build ! the bash malloc library, make a malloc library containing only ! alloca.o ! aclocal.m4 ! - slight change to RL_LIB_READLINE_VERSION to deal with minor version ! numbers with a letter appended (like 4.2a) ! 10/31 ----- doc/{bash.1,bashref.texi} ! - slight change to note that only interactive shells resend a SIGHUP ! to all jobs before exiting ! externs.h ! - declare strto[ui]max only if NEED_STRTOIMAX_DECL is defined. This ! keeps picky compilers from choking because intmax_t is not defined ! (MacOS X 10.1) ! builtins/printf.def ! - #define NEED_STRTOIMAX_DECL before including shell.h ! 11/1 ---- ! general.c ! - check in bash_tilde_expand() for an unquoted tilde-prefix; don't ! bother passing the string to tilde_expand unless the prefix is ! unquoted ! shell.c ! - fix a problem with $LINENO when executing commands supplied with ! the -c invocation option when ONESHOT is defined ! [bash-2.05a-rc1 frozen] ! builtins/printf.def ! - fix the %n conversion to require that the variable name supplied ! be a valid shell identifier variables.c ! - improve random number generator slightly by using the upper 16 ! bits of the running random number instead of the lower 16, which ! are incrementally more random ! 11/2 ---- configure.in ! - if RL_INCLUDEDIR ends up being /usr/include, don't put ! -I$(RL_INCLUDEDIR) into CFLAGS ! 11/5 ---- ! doc/{bash.1,bashref.texi} ! - correct description of POSIXLY_CORRECT to note that the shell enters ! posix mode *before* the startup files are read if POSIXLY_CORRECT ! is in the initial environment variables.c ! - fix function prologues for init_dirstack_var and init_groups_var ! to agree with caller (no arguments) jobs.c ! - fix forward function declarations for pipe_read and pipe_close ! subst.c ! - removed `inline' attribute from skip_double_quoted because it can ! potentially be called recursively bashline.c ! - quick fix to bashline.c:attempt_shell_completion programmable ! completion code to just punt if the end of the command word found ! by find_cmd_end is <= the start found by find_cmd_start (the bug ! is probably in find_cmd_start -- fix later) ! pcomplete.c ! - fix gen_matches_from_itemlist to return if the stringlist is null ! after any cleaning or initialization, before trying to use it ! - fix GEN_COMPS to only bother to try to append the STRINGLIST ! returned by gen_matches_from_itemlist to `glist' if it's non-NULL ! lib/sh/stringlist.c ! - make copy_stringlist return NULL if the STRINGLIST * passed as an ! argument is NULL ! - make append_stringlist call copy_stringlist only if M2 is non-NULL; ! otherwise just return NULL if m1 is NULL ! - make word_list_to_stringlist return 0 immediately if the passed ! LIST argument is NULL ! - make realloc_stringlist call alloc_stringlist if the passed ! STRINGLIST argument (`sl') is 0, just like realloc calls malloc ! ! subst.c ! - in skip_to_delim(), if we have an unclosed ${, and it's at the end ! of the string (string[i] == '{', string[i+1] == '{' and ! string[i+2] == 0, return si (i +2) immediately without bothering ! to call extract_dollar_brace_string or extract_delimited_string ! - in skip_to_delim(), if string[i] is 0 after a call to ! extract_dollar_brace_string or extract_delimited_string (meaning we ! have an unclosed ${ or other expansion, return i immediately without ! doing a `continue' (which will increment i past the end of string) ! - in split_at_delims, don't increment te by 1 if it's pointing to a ! delimiter. this has the effect of skipping the first delimiter ! char in a possibly multi-character delimiter, and ignoring ! single-char delimiters like `>' ! ! configure.in ! - use AC_CHECK_MEMBERS([struct stat.st_blocks]) instead of a call to ! AC_STRUCT_ST_BLOCKS to avoid configure changing LIBOBJS if the test ! fails ! ! general.c ! - introduce two new variables: bash_tilde_{prefixes,suffixes}, set ! to the additional prefixes and suffixes bash wants to pass to the ! tilde expansion code (reserved for post-bash-2.05a fix) ! aclocal.m4 ! - add missing `test' in BASH_CHECK_SYS_SIGLIST ! 11/7 ---- ! lib/readline/vi_mode.c ! - fix rl_vi_goto_mark to explicitly check that the desired mark is ! between 'a' and 'z', since some locales have lowercase letters ! outside that range, which could cause a negative subscript ! ! include/chartypes.h ! - remove superfluous `#undef ISASCII' ! ! lib/sh/strto[iu]max.c ! - changes from Paul Eggert to work around buggy compilers and catch ! configuration errors at compile time ! ! aclocal.m4 ! - new macro, BASH_C_LONG_DOUBLE, identical to AC_C_LONG_DOUBLE but ! with a fix for Irix 5.3 (not called, since I'm not sure it's the ! right thing to do -- the C standard allows double and long double ! to be the same size) ! ! lib/sh/snprintf.c ! - only try to write the trailing NUL in vsnprintf_internal if ! data->length is >= 0, since if it's not, we probably don't have ! a buffer Makefile.in - changed RELSTATUS to `release' ! 11/8 ---- ! lib/sh/strtol.c ! - make sure chars passed to toupper are cast to unsigned ! unwind_prot.c ! - change clear_unwind_protect_list to not require a cast from `int' ! to `char *' ! lib/readline/chardefs.h ! - make _rl_digit_p succeed only for ascii digits, since that's what ! most callers assume diff -Nrc2 bash-2.05/CWRU/empty-for-wordlist bash-2.05a/CWRU/empty-for-wordlist *** bash-2.05/CWRU/empty-for-wordlist Wed Jul 22 12:16:28 1998 --- bash-2.05a/CWRU/empty-for-wordlist Wed Dec 31 19:00:00 1969 *************** *** 1,25 **** - This patch is from Brian Fox, in reply to an email message from - "Marcin 'Qrczak' Kowalczyk" , who wrote: - - I think that bash should accept such a syntax: - - for var in ; do command; done - - Of course it should do nothing. It would simplify some scripts. - - Here is a patch for those who wish it: - - *** parse.y.~1~ Wed Mar 4 09:39:46 1998 - --- parse.y Mon Jul 13 14:40:23 1998 - *************** - *** 495,500 **** - --- 495,504 ---- - { $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9); } - | FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' - { $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9); } - + | FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE - + { $$ = make_for_command ($2, (WORD_LIST *)NULL, $8); } - + | FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' - + { $$ = make_for_command ($2, (WORD_LIST *)NULL, $8); } - ; - --- 0 ---- diff -Nrc2 bash-2.05/CWRU/maildir-patch bash-2.05a/CWRU/maildir-patch *** bash-2.05/CWRU/maildir-patch Mon Nov 27 11:26:32 2000 --- bash-2.05a/CWRU/maildir-patch Wed Dec 31 19:00:00 1969 *************** *** 1,175 **** - # DP: From: Miquel van Smoorenburg - # DP: A patch that adds support for Maildir type mailboxes. - - --- ./mailcheck.c.orig Wed Feb 4 21:30:33 1998 - +++ ./mailcheck.c Sun Nov 14 15:35:07 1999 - @@ -21,8 +21,10 @@ - #include "config.h" - - #include - +#include - #include "bashtypes.h" - #include "posixstat.h" - +#include "posixdir.h" - #ifndef _MINIX - # include - #endif - @@ -37,6 +39,8 @@ - #include "mailcheck.h" - #include - - +#include "mailstat.c" - + - #ifndef NOW - #define NOW ((time_t)time ((time_t *)0)) - #endif - @@ -131,7 +135,7 @@ - struct stat finfo; - - file = mailfiles[i]->name; - - if (stat (file, &finfo) == 0) - + if (mailstat (file, &finfo) == 0) - { - mailfiles[i]->access_time = finfo.st_atime; - mailfiles[i]->mod_time = finfo.st_mtime; - @@ -155,7 +159,7 @@ - i = find_mail_file (filename); - if (i >= 0) - { - - if (stat (filename, &finfo) == 0) - + if (mailstat (filename, &finfo) == 0) - { - mailfiles[i]->mod_time = finfo.st_mtime; - mailfiles[i]->access_time = finfo.st_atime; - @@ -221,7 +225,7 @@ - file = mailfiles[i]->name; - mtime = mailfiles[i]->mod_time; - - - if ((stat (file, &finfo) == 0) && (finfo.st_size > 0)) - + if ((mailstat (file, &finfo) == 0) && (finfo.st_size > 0)) - return (mtime != finfo.st_mtime); - - return (0); - @@ -239,7 +243,7 @@ - file = mailfiles[i]->name; - atime = mailfiles[i]->access_time; - - - if ((stat (file, &finfo) == 0) && (finfo.st_size > 0)) - + if ((mailstat (file, &finfo) == 0) && (finfo.st_size > 0)) - return (atime != finfo.st_atime); - - return (0); - @@ -257,7 +261,7 @@ - file = mailfiles[i]->name; - size = mailfiles[i]->file_size; - - - return ((stat (file, &finfo) == 0) && (finfo.st_size > size)); - + return ((mailstat (file, &finfo) == 0) && (finfo.st_size > size)); - } - - /* Take an element from $MAILPATH and return the portion from - - - diff -ruN bash-2.01.1.b4/mailstat.c bash-2.01.1/mailstat.c - --- bash-2.01.1.b4/mailstat.c Thu Jan 1 01:00:00 1970 - +++ bash-2.01.1/mailstat.c Wed Jun 2 12:05:04 1999 - @@ -0,0 +1,98 @@ - +/* - + * Stat a file. If it's a maildir, check all messages - + * in the maildir and present the grand total as a file. - + * The fields in the 'struct stat' are from the mail directory. - + * The following fields are emulated: - + * - + * st_nlink always 1 - + * st_size total number of bytes in all files - + * st_blocks total number of messages - + * st_atime access time of newest file in maildir - + * st_mtime modify time of newest file in maildir - + * st_mode S_IFDIR changed to S_IFREG - + * - + * This is good enough for most mail-checking applications. - + */ - +int - +mailstat(char *path, struct stat *st) - +{ - + DIR *dd; - + struct dirent *fn; - + struct stat st_ret, st_tmp; - + static struct stat st_new_last, st_ret_last; - + char dir[PATH_MAX * 2]; - + char file[PATH_MAX * 2]; - + int i, l; - + time_t atime = 0, mtime = 0; - + - + /* First see if it's a directory. */ - + if ((i = stat(path, st)) != 0 || !S_ISDIR(st->st_mode)) - + return i; - + if (strlen(path) > sizeof(dir) - 5) { - + errno = ENAMETOOLONG; - + return -1; - + } - + - + st_ret = *st; - + st_ret.st_nlink = 1; - + st_ret.st_size = 0; - + st_ret.st_blocks = 0; - + st_ret.st_mode &= ~S_IFDIR; - + st_ret.st_mode |= S_IFREG; - + - + /* See if cur/ is present */ - + sprintf(dir, "%s/cur", path); - + if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) return 0; - + st_ret.st_atime = st_tmp.st_atime; - + - + /* See if tmp/ is present */ - + sprintf(dir, "%s/tmp", path); - + if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) return 0; - + st_ret.st_mtime = st_tmp.st_mtime; - + - + /* And new/ */ - + sprintf(dir, "%s/new", path); - + if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) return 0; - + st_ret.st_mtime = st_tmp.st_mtime; - + - + /* Optimization - if new/ didn't change, nothing else did. */ - + if (st_tmp.st_dev == st_new_last.st_dev && - + st_tmp.st_ino == st_new_last.st_ino && - + st_tmp.st_atime == st_new_last.st_atime && - + st_tmp.st_mtime == st_new_last.st_mtime) { - + *st = st_ret_last; - + return 0; - + } - + st_new_last = st_tmp; - + - + /* Loop over new/ and cur/ */ - + for (i = 0; i < 2; i++) { - + sprintf(dir, "%s/%s", path, i ? "cur" : "new"); - + sprintf(file, "%s/", dir); - + l = strlen(file); - + if ((dd = opendir(dir)) == NULL) - + return 0; - + while ((fn = readdir(dd)) != NULL) { - + if (fn->d_name[0] == '.' || - + strlen(fn->d_name) + l >= sizeof(file)) - + continue; - + strcpy(file + l, fn->d_name); - + if (stat(file, &st_tmp) != 0) - + continue; - + st_ret.st_size += st_tmp.st_size; - + st_ret.st_blocks++; - + if (st_tmp.st_atime != st_tmp.st_mtime && - + st_tmp.st_atime > atime) - + atime = st_tmp.st_atime; - + if (st_tmp.st_mtime > mtime) - + mtime = st_tmp.st_mtime; - + } - + closedir(dd); - + } - + - + if (atime) st_ret.st_atime = atime; - + if (mtime) st_ret.st_mtime = mtime; - + - + *st = st_ret_last = st_ret; - + return 0; - +} - --- 0 ---- diff -Nrc2 bash-2.05/INSTALL bash-2.05a/INSTALL *** bash-2.05/INSTALL Thu Mar 8 10:44:18 2001 --- bash-2.05a/INSTALL Thu Oct 11 08:34:09 2001 *************** *** 51,63 **** called Autoconf. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of Autoconf. If you do ! this, make sure you are using Autoconf version 2.10 or newer. ! ! If you need to change `configure.in' or regenerate `configure', you ! will need to create two files: `_distribution' and `_patchlevel'. ! `_distribution' should contain the major and minor version numbers of ! the Bash distribution, for example `2.01'. `_patchlevel' should ! contain the patch level of the Bash distribution, `0' for example. The ! script `support/mkconffiles' has been provided to automate the creation ! of these files. You can remove the program binaries and object files from the source --- 51,55 ---- called Autoconf. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of Autoconf. If you do ! this, make sure you are using Autoconf version 2.50 or newer. You can remove the program binaries and object files from the source *************** *** 119,123 **** By default, `make install' will install into `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other ! than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for --- 111,117 ---- By default, `make install' will install into `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other ! than `/usr/local' by giving `configure' the option `--prefix=PATH', or ! by specifying a value for the `DESTDIR' `make' variable when running ! `make install'. You can specify separate installation prefixes for *************** *** 131,140 **** There may be some features `configure' can not figure out ! automatically, but needs to determine by the type of host Bash will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. `TYPE' can either be a short name for the system type, such as `sun4', or a canonical name with three fields: ! `CPU-COMPANY-SYSTEM' (e.g., `sparc-sun-sunos4.1.2'). See the file `support/config.sub' for the possible values of each field. --- 125,134 ---- There may be some features `configure' can not figure out ! automatically, but need to determine by the type of host Bash will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. `TYPE' can either be a short name for the system type, such as `sun4', or a canonical name with three fields: ! `CPU-COMPANY-SYSTEM' (e.g., `i386-unknown-freebsd4.2'). See the file `support/config.sub' for the possible values of each field. *************** *** 211,229 **** database. - `--with-glibc-malloc' - Use the GNU libc version of `malloc' in `lib/malloc/gmalloc.c'. - This is not the version of `malloc' that appears in glibc version - 2, but a modified version of the `malloc' from glibc version 1. - This is somewhat slower than the default `malloc', but wastes less - space on a per-allocation basis, and will return memory to the - operating system under certain circumstances. - `--with-gnu-malloc' A synonym for `--with-bash-malloc'. ! `--with-installed-readline' Define this to make Bash link with a locally-installed version of Readline rather than the version in `lib/readline'. This works ! only with Readline 4.1 and later versions. `--with-purify' --- 205,224 ---- database. `--with-gnu-malloc' A synonym for `--with-bash-malloc'. ! `--with-installed-readline[=PREFIX]' Define this to make Bash link with a locally-installed version of Readline rather than the version in `lib/readline'. This works ! only with Readline 4.2 and later versions. If PREFIX is `yes' or ! not supplied, `configure' uses the values of the make variables ! `includedir' and `libdir', which are subdirectories of `prefix' by ! default, to find the installed version of Readline if it is not in ! the standard system include and library directories. If PREFIX is ! `no', Bash links with the version in `lib/readline'. If PREFIX is ! set to any other value, `configure' treats it as a directory ! pathname and looks for the installed version of Readline in ! subdirectories of that directory (include files in ! PREFIX/`include' and the library in PREFIX/`lib'). `--with-purify' *************** *** 237,240 **** --- 232,241 ---- There are several `--enable-' options that alter how Bash is compiled and linked, rather than changing run-time features. + + `--enable-largefile' + Enable support for large files + (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if + the operating system requires special compiler options to build + programs which can access large files. `--enable-profiling' diff -Nrc2 bash-2.05/MANIFEST bash-2.05a/MANIFEST *** bash-2.05/MANIFEST Tue Mar 20 09:35:19 2001 --- bash-2.05a/MANIFEST Thu Oct 18 16:15:35 2001 *************** *** 56,59 **** --- 56,60 ---- aclocal.m4 f array.c f + arrayfunc.c f eval.c f print_cmd.c f *************** *** 101,106 **** --- 102,110 ---- bashhist.h f bashline.h f + conftypes.h f + patchlevel.h f variables.h f array.h f + arrayfunc.h f jobs.h f findcmd.h f *************** *** 135,142 **** mailcheck.h f pathnames.h f y.tab.c f y.tab.h f parser-built f - builtins/ChangeLog f builtins/Makefile.in f builtins/alias.def f --- 139,146 ---- mailcheck.h f pathnames.h f + xmalloc.h f y.tab.c f y.tab.h f parser-built f builtins/Makefile.in f builtins/alias.def f *************** *** 199,202 **** --- 203,207 ---- cross-build/opennt.cache f include/ansi_stdlib.h f + include/chartypes.h f include/filecntl.h f include/maxpath.h f *************** *** 210,218 **** include/stdc.h f include/systimes.h f include/unionwait.h f - lib/glob/ChangeLog f lib/glob/Makefile.in f ! lib/glob/fnmatch.c f ! lib/glob/fnmatch.h f lib/glob/glob.c f lib/glob/glob.h f --- 215,223 ---- include/stdc.h f include/systimes.h f + include/typemax.h f include/unionwait.h f lib/glob/Makefile.in f ! lib/glob/strmatch.c f ! lib/glob/strmatch.h f lib/glob/glob.c f lib/glob/glob.h f *************** *** 223,232 **** lib/malloc/Makefile.in f lib/malloc/getpagesize.h f lib/malloc/alloca.c f lib/malloc/malloc.c f ! lib/malloc/gmalloc.c f lib/malloc/xmalloc.c f ! lib/malloc/ogmalloc.c f ! lib/malloc/omalloc.c f lib/malloc/stub.c f lib/malloc/i386-alloca.s f --- 228,242 ---- lib/malloc/Makefile.in f lib/malloc/getpagesize.h f + lib/malloc/imalloc.h f + lib/malloc/mstats.h f + lib/malloc/shmalloc.h f + lib/malloc/table.h f lib/malloc/alloca.c f lib/malloc/malloc.c f ! lib/malloc/stats.c f ! lib/malloc/table.c f ! lib/malloc/trace.c f lib/malloc/xmalloc.c f ! lib/malloc/xleaktrace f 755 lib/malloc/stub.c f lib/malloc/i386-alloca.s f *************** *** 308,315 **** --- 318,328 ---- lib/sh/clktck.c f lib/sh/clock.c f + lib/sh/fmtullong.c f + lib/sh/fmtulong.c f lib/sh/getcwd.c f lib/sh/getenv.c f lib/sh/inet_aton.c f lib/sh/itos.c f + lib/sh/mailstat.c f lib/sh/makepath.c f lib/sh/netopen.c f *************** *** 321,324 **** --- 334,338 ---- lib/sh/shquote.c f lib/sh/shtty.c f + lib/sh/snprintf.c f lib/sh/spell.c f lib/sh/strcasecmp.c f *************** *** 329,334 **** --- 343,352 ---- lib/sh/strpbrk.c f lib/sh/strtod.c f + lib/sh/strtoimax.c f lib/sh/strtol.c f + lib/sh/strtoll.c f lib/sh/strtoul.c f + lib/sh/strtoull.c f + lib/sh/strtoumax.c f lib/sh/strtrans.c f lib/sh/times.c f *************** *** 360,364 **** lib/termcap/grot/README f lib/tilde/README f - lib/tilde/ChangeLog f lib/tilde/Makefile.in f lib/tilde/doc/tilde.texi f --- 378,381 ---- *************** *** 379,384 **** CWRU/changelog f CWRU/sh-redir-hack f - CWRU/empty-for-wordlist f - CWRU/maildir-patch f CWRU/mh-folder-comp f doc/FAQ f --- 396,399 ---- *************** *** 396,399 **** --- 411,415 ---- doc/htmlpost.sh f 755 support/Makefile.in f + support/bashversion.c f support/config.guess f support/config.sub f *************** *** 428,431 **** --- 444,448 ---- examples/complete/complete2.ianmac f examples/complete/complete.freebsd f + examples/complete/complete.gnu-longopt f examples/loadables/README f examples/loadables/template.c f *************** *** 435,441 **** examples/loadables/print.c f examples/loadables/realpath.c f - examples/loadables/sprintf.c f examples/loadables/sleep.c f examples/loadables/truefalse.c f examples/loadables/getconf.c f examples/loadables/finfo.c f --- 452,458 ---- examples/loadables/print.c f examples/loadables/realpath.c f examples/loadables/sleep.c f examples/loadables/truefalse.c f + examples/loadables/getconf.h f examples/loadables/getconf.c f examples/loadables/finfo.c f *************** *** 470,473 **** --- 487,493 ---- examples/functions/basename f examples/functions/basename2 f + examples/functions/coproc.bash f + examples/functions/coshell.README f + examples/functions/coshell.bash f examples/functions/csh-compat f examples/functions/dirfuncs f *************** *** 738,741 **** --- 758,763 ---- tests/trap.right f tests/trap1.sub f 755 + tests/trap2.sub f 755 + tests/trap2a.sub f 755 tests/type.tests f tests/type.right f diff -Nrc2 bash-2.05/Makefile.in bash-2.05a/Makefile.in *** bash-2.05/Makefile.in Tue Apr 3 15:03:24 2001 --- bash-2.05a/Makefile.in Mon Nov 12 11:42:45 2001 *************** *** 1,3 **** ! # Makefile for bash-2.05, version 2.120 # # Copyright (C) 1996 Free Software Foundation, Inc. --- 1,3 ---- ! # Makefile for bash-2.05a, version 2.128 # # Copyright (C) 1996 Free Software Foundation, Inc. *************** *** 32,42 **** manpfx = man ! man1ext = 1 ! man1dir = $(mandir)/$(manpfx)$(man1ext) ! man3ext = 3 ! man3dir = $(mandir)/$(manpfx)$(man3ext) htmldir = @htmldir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ --- 32,45 ---- manpfx = man ! man1ext = .1 ! man1dir = $(mandir)/$(manpfx)1 ! man3ext = .3 ! man3dir = $(mandir)/$(manpfx)3 htmldir = @htmldir@ + # Support an alternate destination root directory for package building + DESTDIR = + topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ *************** *** 74,82 **** $(CC) $(CCFLAGS) -c $< - # The name of this program and some version information. EXEEXT = @EXEEXT@ Program = bash$(EXEEXT) Version = @BASHVERS@ ! PatchLevel = @BASHPATCH@ RELSTATUS = release --- 77,90 ---- $(CC) $(CCFLAGS) -c $< EXEEXT = @EXEEXT@ + OBJEXT = @OBJEXT@ + + # The name of this program and some version information. + VERSPROG = bashversion$(EXEEXT) + VERSOBJ = bashversion.$(OBJEXT) + Program = bash$(EXEEXT) Version = @BASHVERS@ ! PatchLevel = `$(BUILD_DIR)/$(VERSPROG) -p` RELSTATUS = release *************** *** 87,91 **** # comment out for release ! # DEBUG = -DDEBUG THIS_SH = $(BUILD_DIR)/$(Program) --- 95,100 ---- # comment out for release ! #DEBUG = -DDEBUG ! #MALLOC_DEBUG = -DMALLOC_DEBUG THIS_SH = $(BUILD_DIR)/$(Program) *************** *** 111,123 **** SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' ! CCFLAGS = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ ! $(DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(INCLUDES) $(CFLAGS) ! INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) -I$(includedir) ! GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \ ! -Wwrite-strings -Werror -Wstrict-prototypes \ ! -Wmissing-prototypes -Wno-implicit ! GCC_LINT_CFLAGS = $(CCFLAGS) $(GCC_LINT_FLAGS) # --- 120,135 ---- SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' ! CCFLAGS_FOR_BUILD = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ ! $(DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(INCLUDES) ! ! CCFLAGS = $(CCFLAGS_FOR_BUILD) $(CFLAGS) ! INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) ! GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ ! -Wcast-align -Wstrict-prototypes -Wconversion \ ! -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic ! ! GCC_LINT_CFLAGS = $(CCFLAGS_FOR_BUILD) $(GCC_LINT_FLAGS) # *************** *** 130,134 **** LIBSRC = $(srcdir)/$(LIBSUBDIR) ! SUBDIR_INCLUDES = -I. @RL_INCLUDE@ -I$(topdir) -I$(topdir)/$(LIBSUBDIR) -I$(includedir) # the bash library --- 142,146 ---- LIBSRC = $(srcdir)/$(LIBSUBDIR) ! SUBDIR_INCLUDES = -I. @RL_INCLUDE@ -I$(topdir) -I$(topdir)/$(LIBSUBDIR) # the bash library *************** *** 154,158 **** ${SH_LIBSRC}/stringvec.c ${SH_LIBSRC}/tmpfile.c \ ${SH_LIBSRC}/spell.c ${SH_LIBSRC}/strtrans.c \ ! ${SH_LIBSRC}/strindex.c ${SH_LIBSRC}/shquote.c SHLIB_LIB = -lsh --- 166,174 ---- ${SH_LIBSRC}/stringvec.c ${SH_LIBSRC}/tmpfile.c \ ${SH_LIBSRC}/spell.c ${SH_LIBSRC}/strtrans.c \ ! ${SH_LIBSRC}/strindex.c ${SH_LIBSRC}/shquote.c \ ! ${SH_LIBSRC}/snprintf.c ${SH_LIBSRC}/mailstat.c \ ! ${SH_LIBSRC}/fmtulong.c ${SH_LIBSRC}/fmtullong.c \ ! ${SH_LIBSRC}/strtoll.c ${SH_LIBSRC}/strtoull.c \ ! ${SH_LIBSRC}/strtoimax.c ${SH_LIBSRC}/strtoumax.c SHLIB_LIB = -lsh *************** *** 168,171 **** --- 184,189 ---- RL_ABSSRC = ${topdir}/$(RL_LIBDIR) + RL_INCLUDEDIR = @RL_INCLUDEDIR@ + READLINE_LIB = @READLINE_LIB@ READLINE_LIBRARY = $(RL_LIBDIR)/libreadline.a *************** *** 253,259 **** GLOB_DEP = $(GLOB_LIBRARY) ! GLOB_SOURCE = $(GLOB_LIBSRC)/glob.c $(GLOB_LIBSRC)/fnmatch.c \ ! $(GLOB_LIBSRC)/glob.h $(GLOB_LIBSRC)/fnmatch.h ! GLOB_OBJ = $(GLOB_LIBDIR)/glob.o $(GLOB_LIBDIR)/fnmatch.o # The source, object and documentation for the GNU Tilde library. --- 271,277 ---- GLOB_DEP = $(GLOB_LIBRARY) ! GLOB_SOURCE = $(GLOB_LIBSRC)/glob.c $(GLOB_LIBSRC)/strmatch.c \ ! $(GLOB_LIBSRC)/glob.h $(GLOB_LIBSRC)/strmatch.h ! GLOB_OBJ = $(GLOB_LIBDIR)/glob.o $(GLOB_LIBDIR)/strmatch.o # The source, object and documentation for the GNU Tilde library. *************** *** 281,295 **** MALLOC_SRC = @MALLOC_SRC@ ! MALLOC_SOURCE = ${ALLOC_LIBSRC}/${MALLOC_SRC} ! MALLOC_CFLAGS = -DRCHECK -Dbotch=programming_error ! ! MALLOC_LIB = -lmalloc ! MALLOC_LIBRARY = $(ALLOC_LIBDIR)/libmalloc.a ! MALLOC_LDFLAGS = -L$(ALLOC_LIBDIR) ! MALLOC_DEP = $(MALLOC_LIBRARY) ! ALLOC_HEADERS = $(ALLOC_LIBSRC)/getpagesize.h ! $(MALLOC_LIBRARY): ${MALLOC_SOURCE} @(cd $(ALLOC_LIBDIR) && \ $(MAKE) $(MFLAGS) \ --- 299,316 ---- MALLOC_SRC = @MALLOC_SRC@ ! MALLOC_OTHERSRC = ${ALLOC_LIBSRC}/trace.c ${ALLOC_LIBSRC}/stats.c \ ! ${ALLOC_LIBSRC}/table.c ! MALLOC_SOURCE = ${ALLOC_LIBSRC}/${MALLOC_SRC} ${MALLOC_OTHERSRC} ! MALLOC_CFLAGS = -DRCHECK -Dbotch=programming_error ${MALLOC_DEBUG} ! ! MALLOC_LIB = @MALLOC_LIB@ ! MALLOC_LIBRARY = @MALLOC_LIBRARY@ ! MALLOC_LDFLAGS = @MALLOC_LDFLAGS@ ! MALLOC_DEP = @MALLOC_DEP@ ! ALLOC_HEADERS = $(ALLOC_LIBSRC)/getpagesize.h $(ALLOC_LIBSRC)/shmalloc.h \ ! $(ALLOC_LIBSRC)/imalloc.h $(ALLOC_LIBSRC)/mstats.h ! $(MALLOC_LIBRARY): ${MALLOC_SOURCE} ${ALLOC_HEADERS} config.h @(cd $(ALLOC_LIBDIR) && \ $(MAKE) $(MFLAGS) \ *************** *** 303,307 **** $(BASHINCDIR)/posixtime.h $(BASHINCDIR)/systimes.h \ $(BASHINCDIR)/unionwait.h $(BASHINCDIR)/maxpath.h \ ! $(BASHINCDIR)/shtty.h LIBRARIES = $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \ --- 324,328 ---- $(BASHINCDIR)/posixtime.h $(BASHINCDIR)/systimes.h \ $(BASHINCDIR)/unionwait.h $(BASHINCDIR)/maxpath.h \ ! $(BASHINCDIR)/shtty.h $(BASHINCDIR)/typemax.h LIBRARIES = $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \ *************** *** 323,327 **** expr.c copy_cmd.c flags.c subst.c hashcmd.c hashlib.c mailcheck.c \ test.c trap.c alias.c jobs.c nojobs.c $(ALLOC_FILES) braces.c \ ! input.c bashhist.c array.c sig.c pathexp.c \ unwind_prot.c siglist.c bashline.c bracecomp.c error.c \ list.c stringlib.c locale.c findcmd.c redir.c \ --- 344,348 ---- expr.c copy_cmd.c flags.c subst.c hashcmd.c hashlib.c mailcheck.c \ test.c trap.c alias.c jobs.c nojobs.c $(ALLOC_FILES) braces.c \ ! input.c bashhist.c array.c arrayfunc.c sig.c pathexp.c \ unwind_prot.c siglist.c bashline.c bracecomp.c error.c \ list.c stringlib.c locale.c findcmd.c redir.c \ *************** *** 330,337 **** HSOURCES = shell.h flags.h trap.h hashcmd.h hashlib.h jobs.h builtins.h \ general.h variables.h config.h $(ALLOC_HEADERS) alias.h \ ! quit.h unwind_prot.h syntax.h \ command.h input.h error.h bashansi.h dispose_cmd.h make_cmd.h \ subst.h externs.h siglist.h bashhist.h bashline.h bashtypes.h \ ! array.h sig.h mailcheck.h bashintl.h bashjmp.h ${GRAM_H} \ execute_cmd.h parser.h pathexp.h pathnames.h pcomplete.h \ $(BASHINCFILES) --- 351,358 ---- HSOURCES = shell.h flags.h trap.h hashcmd.h hashlib.h jobs.h builtins.h \ general.h variables.h config.h $(ALLOC_HEADERS) alias.h \ ! quit.h unwind_prot.h syntax.h ${GRAM_H} \ command.h input.h error.h bashansi.h dispose_cmd.h make_cmd.h \ subst.h externs.h siglist.h bashhist.h bashline.h bashtypes.h \ ! array.h arrayfunc.h sig.h mailcheck.h bashintl.h bashjmp.h \ execute_cmd.h parser.h pathexp.h pathnames.h pcomplete.h \ $(BASHINCFILES) *************** *** 344,347 **** --- 365,369 ---- # object files chosen based on running of configure JOBS_O = @JOBS_O@ + SIGLIST_O = @SIGLIST_O@ # Matching object files. *************** *** 350,355 **** expr.o flags.o $(JOBS_O) subst.o hashcmd.o hashlib.o mailcheck.o \ trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o \ ! alias.o array.o braces.o bracecomp.o bashhist.o bashline.o \ ! siglist.o list.o stringlib.o locale.o findcmd.o redir.o \ pcomplete.o pcomplib.o syntax.o xmalloc.o --- 372,377 ---- expr.o flags.o $(JOBS_O) subst.o hashcmd.o hashlib.o mailcheck.o \ trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o \ ! alias.o array.o arrayfunc.o braces.o bracecomp.o bashhist.o \ ! bashline.o $(SIGLIST_O) list.o stringlib.o locale.o findcmd.o redir.o \ pcomplete.o pcomplib.o syntax.o xmalloc.o *************** *** 415,419 **** tests/recho$(EXEEXT) tests/zecho$(EXEEXT) \ tests/printenv$(EXEEXT) mksignames$(EXEEXT) lsignames.h \ ! mksyntax${EXEEXT} syntax.c CREATED_CONFIGURE = config.h config.cache config.status config.log \ stamp-h --- 437,441 ---- tests/recho$(EXEEXT) tests/zecho$(EXEEXT) \ tests/printenv$(EXEEXT) mksignames$(EXEEXT) lsignames.h \ ! mksyntax${EXEEXT} syntax.c $(VERSPROG) $(VERSOBJ) CREATED_CONFIGURE = config.h config.cache config.status config.log \ stamp-h *************** *** 436,449 **** size $(Program) ! .build: $(SOURCES) config.h Makefile version.h @echo @echo " ***********************************************************" @echo " * *" ! @echo " * Making Bash-$(Version).$(PatchLevel)-$(RELSTATUS) for a $(Machine) running $(OS)" @echo " * *" @echo " ***********************************************************" @echo ! bashbug: $(SUPPORT_SRC)bashbug.sh config.h Makefile @sed -e "s%!MACHINE!%$(Machine)%" -e "s%!OS!%$(OS)%" \ -e "s%!CFLAGS!%$(CCFLAGS)%" -e "s%!CC!%$(CC)%" \ --- 458,471 ---- size $(Program) ! .build: $(SOURCES) config.h Makefile version.h $(VERSPROG) @echo @echo " ***********************************************************" @echo " * *" ! @echo " * `$(BUILD_DIR)/$(VERSPROG) -l`" @echo " * *" @echo " ***********************************************************" @echo ! bashbug: $(SUPPORT_SRC)bashbug.sh config.h Makefile $(VERSPROG) @sed -e "s%!MACHINE!%$(Machine)%" -e "s%!OS!%$(OS)%" \ -e "s%!CFLAGS!%$(CCFLAGS)%" -e "s%!CC!%$(CC)%" \ *************** *** 458,465 **** size $(Program) version.h: $(SOURCES) config.h Makefile ! $(SHELL) $(SUPPORT_SRC)mkversion.sh -b -s $(RELSTATUS) -d $(Version) -p $(PatchLevel) -o newversion.h \ && mv newversion.h version.h # old rules GRAM_H = parser-built --- 480,493 ---- size $(Program) + lint: + ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made + version.h: $(SOURCES) config.h Makefile ! $(SHELL) $(SUPPORT_SRC)mkversion.sh -b -S ${topdir} -s $(RELSTATUS) -d $(Version) -o newversion.h \ && mv newversion.h version.h + bashversion$(EXEEXT): patchlevel.h conftypes.h version.h version.o $(SUPPORT_SRC)bashversion.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) $(CPPFLAGS) -o $@ $(SUPPORT_SRC)bashversion.c version.o + # old rules GRAM_H = parser-built *************** *** 472,475 **** --- 500,504 ---- # -if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi $(YACC) -d $(srcdir)/parse.y + touch parser-built # -if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; else cp -p y.tab.h ${GRAM_H}; fi *************** *** 494,498 **** @echo making $@ in ${GLOB_LIBDIR} @(cd ${GLOB_LIBDIR} && \ ! $(MAKE) $(MFLAGS) libglob.a) || exit 1 $(TILDE_LIBRARY): config.h $(TILDE_SOURCE) --- 523,527 ---- @echo making $@ in ${GLOB_LIBDIR} @(cd ${GLOB_LIBDIR} && \ ! $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libglob.a) || exit 1 $(TILDE_LIBRARY): config.h $(TILDE_SOURCE) *************** *** 509,519 **** @echo making $@ in ${SH_LIBDIR} @(cd ${SH_LIBDIR} && \ ! $(MAKE) $(MFLAGS) ${SHLIB_LIBNAME}) || exit 1 mksignames$(EXEEXT): $(SUPPORT_SRC)mksignames.c ! $(CC_FOR_BUILD) $(CCFLAGS) $(CPPFLAGS) -o $@ $(SUPPORT_SRC)mksignames.c ! mksyntax$(EXEEXT): ${srcdir}/mksyntax.c config.h syntax.h ! ${CC_FOR_BUILD} ${CCFLAGS} ${CPPFLAGS} -o $@ ${srcdir}/mksyntax.c # make a list of signals for the local system -- this is done when we're --- 538,548 ---- @echo making $@ in ${SH_LIBDIR} @(cd ${SH_LIBDIR} && \ ! $(MAKE) $(MFLAGS) DEBUG=${DEBUG} ${SHLIB_LIBNAME}) || exit 1 mksignames$(EXEEXT): $(SUPPORT_SRC)mksignames.c ! $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) $(CPPFLAGS) -o $@ $(SUPPORT_SRC)mksignames.c ! mksyntax$(EXEEXT): ${srcdir}/mksyntax.c config.h syntax.h ${BASHINCDIR}/chartypes.h ! ${CC_FOR_BUILD} ${CCFLAGS_FOR_BUILD} ${CPPFLAGS} -o $@ ${srcdir}/mksyntax.c # make a list of signals for the local system -- this is done when we're *************** *** 532,543 **** $(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h ! @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) libbuiltins.a ) || exit 1 # these require special rules to circumvent make builtin rules ${DEFDIR}/common.o: $(BUILTIN_SRCDIR)/common.c ! @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) common.o) || exit 1 ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c ! @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) bashgetopt.o) || exit 1 ${DEFDIR}/builtext.h: $(BUILTIN_DEFS) --- 561,572 ---- $(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h ! @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libbuiltins.a ) || exit 1 # these require special rules to circumvent make builtin rules ${DEFDIR}/common.o: $(BUILTIN_SRCDIR)/common.c ! @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} common.o) || exit 1 ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c ! @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} bashgetopt.o) || exit 1 ${DEFDIR}/builtext.h: $(BUILTIN_DEFS) *************** *** 594,619 **** installdirs: ! @${SHELL} $(SUPPORT_SRC)mkdirs $(bindir) ! @${SHELL} $(SUPPORT_SRC)mkdirs $(man1dir) $(man3dir) ! @${SHELL} $(SUPPORT_SRC)mkdirs $(infodir) install: .made installdirs ! $(INSTALL_PROGRAM) $(INSTALLMODE) $(Program) $(bindir)/$(Program) ! $(INSTALL_PROGRAM) $(INSTALLMODE2) bashbug $(bindir)/bashbug -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ man1dir=$(man1dir) man1ext=$(man1ext) \ man3dir=$(man3dir) man3ext=$(man3ext) \ ! infodir=$(infodir) htmldir=$(htmldir) $@ ) install-strip: $(MAKE) $(MFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ ! prefix=${prefix} exec_prefix=${exec_prefix} install uninstall: .made ! $(RM) $(bindir)/$(Program) $(bindir)/bashbug -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ man1dir=$(man1dir) man1ext=$(man1ext) \ man3dir=$(man3dir) man3ext=$(man3ext) \ ! infodir=$(infodir) $@ ) .PHONY: basic-clean clean realclean maintainer-clean distclean mostlyclean --- 623,649 ---- installdirs: ! @${SHELL} $(SUPPORT_SRC)mkdirs $(DESTDIR)$(bindir) ! @${SHELL} $(SUPPORT_SRC)mkdirs $(DESTDIR)$(man1dir) ! @${SHELL} $(SUPPORT_SRC)mkdirs $(DESTDIR)$(infodir) install: .made installdirs ! $(INSTALL_PROGRAM) $(INSTALLMODE) $(Program) $(DESTDIR)$(bindir)/$(Program) ! $(INSTALL_PROGRAM) $(INSTALLMODE2) bashbug $(DESTDIR)$(bindir)/bashbug -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ man1dir=$(man1dir) man1ext=$(man1ext) \ man3dir=$(man3dir) man3ext=$(man3ext) \ ! infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) install-strip: $(MAKE) $(MFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ ! prefix=${prefix} exec_prefix=${exec_prefix} \ ! DESTDIR=$(DESTDIR) install uninstall: .made ! $(RM) $(DESTDIR)$(bindir)/$(Program) $(DESTDIR)$(bindir)/bashbug -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ man1dir=$(man1dir) man1ext=$(man1ext) \ man3dir=$(man3dir) man3ext=$(man3ext) \ ! infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) .PHONY: basic-clean clean realclean maintainer-clean distclean mostlyclean *************** *** 661,665 **** @echo This command is intended for maintainers to use. @echo It deletes files that may require special tools to rebuild. ! $(RM) y.tab.c y.tab.h parser-built.h tags TAGS ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) ( cd builtins && $(MAKE) $(MFLAGS) $@ ) --- 691,695 ---- @echo This command is intended for maintainers to use. @echo It deletes files that may require special tools to rebuild. ! $(RM) y.tab.c y.tab.h parser-built tags TAGS ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) ( cd builtins && $(MAKE) $(MFLAGS) $@ ) *************** *** 683,687 **** @$(CC) $(CCFLAGS) -o $@ $(SUPPORT_SRC)printenv.c ! test tests check: force $(Program) $(TESTS_SUPPORT) @-test -d tests || mkdir tests @cp $(TESTS_SUPPORT) tests --- 713,717 ---- @$(CC) $(CCFLAGS) -o $@ $(SUPPORT_SRC)printenv.c ! test tests check: force $(Program) $(TESTS_SUPPORT) @-test -d tests || mkdir tests @cp $(TESTS_SUPPORT) tests *************** *** 704,707 **** --- 734,741 ---- $(Program) $(SUPPORT_SRC)mkdep -c ${CC} -- ${CCFLAGS} ${CSOURCES} + #### PRIVATE TARGETS #### + hashtest: hashlib.c + $(CC) -DTEST_HASHING $(CCFLAGS) -o $@ $(srcdir)/hashlib.c + ############################ DEPENDENCIES ############################### *************** *** 725,741 **** # shell basics copy_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! copy_cmd.o: general.h bashtypes.h variables.h array.h hashlib.h copy_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h copy_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h dispose_cmd.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h dispose_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h ! dispose_cmd.o: error.h general.h bashtypes.h variables.h array.h hashlib.h dispose_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h dispose_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h error.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h flags.h ${BASHINCDIR}/stdc.h error.h ! error.o: command.h general.h externs.h input.h bashhist.h eval.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.h flags.h ${DEFSRC}/common.h eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! eval.o: general.h bashtypes.h variables.h array.h hashlib.h eval.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h --- 759,775 ---- # shell basics copy_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! copy_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h copy_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h copy_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h dispose_cmd.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h dispose_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h ! dispose_cmd.o: error.h general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h dispose_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h dispose_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h error.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h flags.h ${BASHINCDIR}/stdc.h error.h ! error.o: command.h general.h xmalloc.h externs.h input.h bashhist.h eval.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.h flags.h ${DEFSRC}/common.h eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! eval.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h eval.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h *************** *** 743,821 **** execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! execute_cmd.o: general.h bashtypes.h variables.h array.h hashlib.h execute_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.o: ${BASHINCDIR}/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit.h siglist.h execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h ! execute_cmd.o: $(DEFSRC)/common.h ${DEFDIR}/builtext.h ${GLOB_LIBSRC}/fnmatch.h ! execute_cmd.o: ${BASHINCDIR}/posixtime.h expr.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h expr.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! expr.o: general.h bashtypes.h variables.h array.h hashlib.h expr.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h findcmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h findcmd.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ! findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h variables.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h findcmd.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h flags.o: config.h flags.h flags.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! flags.o: general.h bashtypes.h variables.h array.h hashlib.h flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h ! flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h general.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! general.o: general.h bashtypes.h variables.h array.h hashlib.h general.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h general.o: make_cmd.h subst.h sig.h pathnames.h externs.h general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! hashcmd.o: general.h bashtypes.h variables.h array.h hashcmd.h hashcmd.o: execute_cmd.h findcmd.h ${BASHINCDIR}/stdc.h hashlib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! hashlib.o: general.h bashtypes.h variables.h array.h hashlib.h hashlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ! input.o: command.h ${BASHINCDIR}/stdc.h general.h input.h error.h externs.h list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! list.o: general.h bashtypes.h variables.h array.h hashlib.h list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h list.o: make_cmd.h subst.h sig.h pathnames.h externs.h locale.o: config.h bashtypes.h bashintl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h locale.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! locale.o: general.h bashtypes.h variables.h array.h hashlib.h locale.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h locale.o: make_cmd.h subst.h sig.h pathnames.h externs.h mailcheck.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h mailcheck.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! mailcheck.o: general.h bashtypes.h variables.h array.h hashlib.h mailcheck.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h mailcheck.o: make_cmd.h subst.h sig.h pathnames.h externs.h mailcheck.o: execute_cmd.h mailcheck.h make_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashansi.h ! make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h error.h flags.h make_cmd.h ! make_cmd.o: variables.h array.h hashlib.h subst.h input.h externs.h make_cmd.o: jobs.h quit.h siglist.h syntax.h y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! y.tab.o: general.h bashtypes.h variables.h array.h hashlib.h y.tab.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h ! y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h y.tab.o: trap.h flags.h parser.h input.h mailcheck.h $(DEFSRC)/common.h y.tab.o: $(DEFDIR)/builtext.h bashline.h bashhist.h jobs.h siglist.h alias.h pathexp.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h pathexp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! pathexp.o: general.h bashtypes.h variables.h array.h hashlib.h pathexp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h pathexp.o: make_cmd.h subst.h sig.h pathnames.h externs.h pathexp.o: pathexp.h flags.h ! pathexp.o: $(GLOB_LIBSRC)/glob.h $(GLOB_LIBSRC)/fnmatch.h print_cmd.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h print_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! print_cmd.o: general.h bashtypes.h variables.h array.h hashlib.h print_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h print_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h --- 777,860 ---- execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! execute_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h execute_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.o: ${BASHINCDIR}/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit.h siglist.h execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h ! execute_cmd.o: $(DEFSRC)/common.h ${DEFDIR}/builtext.h ${GLOB_LIBSRC}/strmatch.h ! execute_cmd.o: ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/chartypes.h expr.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h expr.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! expr.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h expr.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h + expr.o: ${BASHINCDIR}/chartypes.h findcmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h findcmd.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ! findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h xmalloc.h variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h findcmd.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h + findcmd.o: ${BASHINCDIR}/chartypes.h flags.o: config.h flags.h flags.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! flags.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h ! flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.h general.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! general.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h general.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h general.o: make_cmd.h subst.h sig.h pathnames.h externs.h general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h + general.o: ${BASHINCDIR}/chartypes.h hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! hashcmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashcmd.h hashcmd.o: execute_cmd.h findcmd.h ${BASHINCDIR}/stdc.h hashlib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! hashlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h hashlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ! input.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h input.h error.h externs.h list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h list.o: make_cmd.h subst.h sig.h pathnames.h externs.h locale.o: config.h bashtypes.h bashintl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h locale.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! locale.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h locale.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h locale.o: make_cmd.h subst.h sig.h pathnames.h externs.h + locale.o: ${BASHINCDIR}/chartypes.h mailcheck.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h + mailcheck.o: ${BASHINCDIR}/posixtime.h mailcheck.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! mailcheck.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h mailcheck.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h mailcheck.o: make_cmd.h subst.h sig.h pathnames.h externs.h mailcheck.o: execute_cmd.h mailcheck.h make_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashansi.h ! make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h flags.h make_cmd.h ! make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h make_cmd.o: jobs.h quit.h siglist.h syntax.h y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! y.tab.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h y.tab.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h ! y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h y.tab.o: trap.h flags.h parser.h input.h mailcheck.h $(DEFSRC)/common.h y.tab.o: $(DEFDIR)/builtext.h bashline.h bashhist.h jobs.h siglist.h alias.h pathexp.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h pathexp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! pathexp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h pathexp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h pathexp.o: make_cmd.h subst.h sig.h pathnames.h externs.h pathexp.o: pathexp.h flags.h ! pathexp.o: $(GLOB_LIBSRC)/glob.h $(GLOB_LIBSRC)/strmatch.h print_cmd.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h print_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! print_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h print_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h print_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h *************** *** 823,860 **** redir.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h redir.o: ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! redir.o: general.h variables.h array.h hashlib.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h redir.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h redir.o: flags.h execute_cmd.h redir.h input.h shell.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! shell.o: general.h bashtypes.h variables.h array.h hashlib.h shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h ! shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h ! shell.o: ${GLOB_LIBSRC}/fnmatch.h sig.o: config.h bashtypes.h sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! sig.o: general.h bashtypes.h variables.h array.h hashlib.h sig.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h sig.o: jobs.h siglist.h trap.h $(DEFSRC)/common.h bashline.h bashhist.h siglist.o: config.h bashtypes.h siglist.h trap.h ! stringlib.o: bashtypes.h stringlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! stringlib.o: general.h bashtypes.h variables.h array.h hashlib.h stringlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h stringlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h subst.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/posixstat.h subst.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! subst.o: general.h bashtypes.h variables.h array.h hashlib.h subst.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h subst.o: make_cmd.h subst.h sig.h pathnames.h externs.h subst.o: flags.h jobs.h siglist.h execute_cmd.h ${BASHINCDIR}/filecntl.h trap.h pathexp.h subst.o: mailcheck.h input.h $(DEFSRC)/getopt.h $(DEFSRC)/common.h ! subst.o: bashline.h bashhist.h ${GLOB_LIBSRC}/fnmatch.h test.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h test.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! test.o: general.h bashtypes.h variables.h array.h hashlib.h test.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h test.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h --- 862,901 ---- redir.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h redir.o: ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! redir.o: general.h xmalloc.h variables.h arrayfunc.h conftypes.h array.h hashlib.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h redir.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h redir.o: flags.h execute_cmd.h redir.h input.h shell.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h ! shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h version.h shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h ! shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h sig.o: config.h bashtypes.h sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h sig.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h sig.o: jobs.h siglist.h trap.h $(DEFSRC)/common.h bashline.h bashhist.h siglist.o: config.h bashtypes.h siglist.h trap.h ! stringlib.o: bashtypes.h ${BASHINCDIR}/chartypes.h stringlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! stringlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h stringlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h stringlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h + stringlib.o: ${GLOB_LIBSRC}/glob.h ${GLOB_LIBSRC}/strmatch.h subst.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/posixstat.h subst.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! subst.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h subst.o: make_cmd.h subst.h sig.h pathnames.h externs.h subst.o: flags.h jobs.h siglist.h execute_cmd.h ${BASHINCDIR}/filecntl.h trap.h pathexp.h subst.o: mailcheck.h input.h $(DEFSRC)/getopt.h $(DEFSRC)/common.h ! subst.o: bashline.h bashhist.h ${GLOB_LIBSRC}/strmatch.h ! subst.o: ${BASHINCDIR}/chartypes.h test.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h test.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! test.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h test.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h test.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h *************** *** 862,880 **** trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! trap.o: general.h bashtypes.h variables.h array.h hashlib.h trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h trap.o: signames.h $(DEFSRC)/common.h unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h ! unwind_prot.o: general.h unwind_prot.h quit.h sig.h variables.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h variables.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! variables.o: general.h bashtypes.h variables.h array.h hashlib.h variables.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h variables.o: flags.h execute_cmd.h mailcheck.h input.h $(DEFSRC)/common.h ! variables.o: findcmd.h bashhist.h ! variables.o: pcomplete.h ! version.o: version.h .build xmalloc.o: config.h bashtypes.h ${BASHINCDIR}/ansi_stdlib.h error.h --- 903,922 ---- trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h trap.o: signames.h $(DEFSRC)/common.h unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h ! unwind_prot.o: general.h xmalloc.h unwind_prot.h quit.h sig.h variables.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h variables.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! variables.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h variables.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h variables.o: flags.h execute_cmd.h mailcheck.h input.h $(DEFSRC)/common.h ! variables.o: findcmd.h bashhist.h hashcmd.h pathexp.h ! variables.o: pcomplete.h version.h ${BASHINCDIR}/chartypes.h ! variables.o: ${BASHINCDIR}/posixtime.h ! version.o: version.h conftypes.h patchlevel.h xmalloc.o: config.h bashtypes.h ${BASHINCDIR}/ansi_stdlib.h error.h *************** *** 884,894 **** jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h jobs.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! jobs.o: general.h bashtypes.h variables.h array.h hashlib.h jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h jobs.o: make_cmd.h subst.h sig.h pathnames.h externs.h jobs.o: jobs.h flags.h $(DEFSRC)/common.h $(DEFDIR)/builtext.h jobs.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h nojobs.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashjmp.h ${BASHINCDIR}/posixjmp.h ! nojobs.o: command.h ${BASHINCDIR}/stdc.h general.h jobs.h quit.h siglist.h externs.h nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h --- 926,937 ---- jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h jobs.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! jobs.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h jobs.o: make_cmd.h subst.h sig.h pathnames.h externs.h jobs.o: jobs.h flags.h $(DEFSRC)/common.h $(DEFDIR)/builtext.h jobs.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h + jobs.o: ${BASHINCDIR}/posixtime.h nojobs.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashjmp.h ${BASHINCDIR}/posixjmp.h ! nojobs.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h jobs.h quit.h siglist.h externs.h nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h *************** *** 897,916 **** array.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h array.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! array.o: general.h bashtypes.h variables.h array.h hashlib.h array.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h array.o: make_cmd.h subst.h sig.h pathnames.h externs.h array.o: $(DEFSRC)/common.h braces.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h braces.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! braces.o: general.h bashtypes.h variables.h array.h hashlib.h braces.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h braces.o: make_cmd.h subst.h sig.h pathnames.h externs.h alias.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h ! alias.o: general.h bashtypes.h externs.h alias.h alias.o: pcomplete.h pcomplib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h pcomplib.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h ! pcomplib.o: bashjmp.h command.h general.h error.h variables.h quit.h pcomplib.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h pcomplib.o: externs.h ${BASHINCDIR}/maxpath.h --- 940,966 ---- array.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h array.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! array.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h array.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h array.o: make_cmd.h subst.h sig.h pathnames.h externs.h array.o: $(DEFSRC)/common.h + arrayfunc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h + arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h + arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h + arrayfunc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h + arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h + arrayfunc.o: $(DEFSRC)/common.h braces.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h braces.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! braces.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h braces.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h braces.o: make_cmd.h subst.h sig.h pathnames.h externs.h alias.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h ! alias.o: general.h xmalloc.h bashtypes.h externs.h alias.h alias.o: pcomplete.h + alias.o: ${BASHINCDIR}/chartypes.h pcomplib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h pcomplib.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h ! pcomplib.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h pcomplib.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h pcomplib.o: externs.h ${BASHINCDIR}/maxpath.h *************** *** 918,924 **** pcomplete.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h pcomplete.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h ! pcomplete.o: bashjmp.h command.h general.h error.h variables.h quit.h pcomplete.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h ! pcomplete.o: externs.h ${BASHINCDIR}/maxpath.h # library support files --- 968,974 ---- pcomplete.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h pcomplete.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h ! pcomplete.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h pcomplete.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h ! pcomplete.o: externs.h ${BASHINCDIR}/maxpath.h execute_cmd.h # library support files *************** *** 927,950 **** bashhist.o: ${BASHINCDIR}/filecntl.h bashhist.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! bashhist.o: general.h bashtypes.h variables.h array.h hashlib.h bashhist.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h ! bashhist.o: $(GLOB_LIBSRC)/fnmatch.h bashline.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! bashline.o: general.h bashtypes.h variables.h array.h hashlib.h bashline.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h ! bashline.o: pcomplete.h bracecomp.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bracecomp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! bracecomp.o: general.h bashtypes.h variables.h array.h hashlib.h bracecomp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h bracecomp.o: make_cmd.h subst.h sig.h pathnames.h externs.h ! bracecomp.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h hashlib.h builtins.h general.h ! bracecomp.o: quit.h alias.h config.h variables.h bracecomp.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h --- 977,1000 ---- bashhist.o: ${BASHINCDIR}/filecntl.h bashhist.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! bashhist.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bashhist.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h ! bashhist.o: $(GLOB_LIBSRC)/strmatch.h bashline.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! bashline.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bashline.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h ! bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h bracecomp.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bracecomp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h ! bracecomp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bracecomp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h bracecomp.o: make_cmd.h subst.h sig.h pathnames.h externs.h ! bracecomp.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h hashlib.h builtins.h general.h xmalloc.h ! bracecomp.o: quit.h alias.h config.h variables.h arrayfunc.h conftypes.h bracecomp.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h *************** *** 978,995 **** # builtin c sources builtins/bashgetopt.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ! builtins/bashgetopt.o: shell.h syntax.h config.h bashjmp.h command.h general.h error.h ! builtins/bashgetopt.o: variables.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h builtins/bashgetopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h builtins/bashgetopt.o: $(DEFSRC)/common.h builtins/common.o: bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/common.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h ! builtins/common.o: ${BASHINCDIR}/memalloc.h variables.h input.h siglist.h builtins/common.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h ! builtins/common.o: execute_cmd.h ${BASHINCDIR}/stdc.h general.h error.h pathnames.h builtins/common.o: ${DEFDIR}/builtext.h builtins/evalfile.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ! builtins/evalfile.o: shell.h syntax.h config.h bashjmp.h command.h general.h error.h ! builtins/evalfile.o: variables.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h builtins/evalfile.o: jobs.h builtins.h flags.h input.h execute_cmd.h --- 1028,1047 ---- # builtin c sources builtins/bashgetopt.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ! builtins/bashgetopt.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h ! builtins/bashgetopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h builtins/bashgetopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h builtins/bashgetopt.o: $(DEFSRC)/common.h + builtins/bashgetopt.o: ${BASHINCDIR}/chartypes.h builtins/common.o: bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/common.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h ! builtins/common.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftypes.h input.h siglist.h builtins/common.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h ! builtins/common.o: execute_cmd.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h pathnames.h builtins/common.o: ${DEFDIR}/builtext.h + builtins/common.o: ${BASHINCDIR}/chartypes.h builtins/evalfile.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ! builtins/evalfile.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h ! builtins/evalfile.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h builtins/evalfile.o: jobs.h builtins.h flags.h input.h execute_cmd.h *************** *** 997,1001 **** builtins/evalstring.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/evalstring.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h siglist.h ! builtins/evalstring.o: ${BASHINCDIR}/memalloc.h variables.h input.h builtins/evalstring.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h builtins/evalstring.o: dispose_cmd.h make_cmd.h subst.h externs.h --- 1049,1053 ---- builtins/evalstring.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/evalstring.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h siglist.h ! builtins/evalstring.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftypes.h input.h builtins/evalstring.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h builtins/evalstring.o: dispose_cmd.h make_cmd.h subst.h externs.h *************** *** 1003,1008 **** builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h builtins/getopt.o: config.h ${BASHINCDIR}/memalloc.h ! builtins/getopt.o: shell.h syntax.h bashjmp.h command.h general.h error.h ! builtins/getopt.o: variables.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h builtins/getopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h builtins/getopt.o: $(DEFSRC)/getopt.h --- 1055,1060 ---- builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h builtins/getopt.o: config.h ${BASHINCDIR}/memalloc.h ! builtins/getopt.o: shell.h syntax.h bashjmp.h command.h general.h xmalloc.h error.h ! builtins/getopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h builtins/getopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h builtins/getopt.o: $(DEFSRC)/getopt.h *************** *** 1011,1161 **** # builtin def files ! builtins/alias.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/alias.o: quit.h $(DEFSRC)/common.h builtins/alias.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h ${BASHINCDIR}/stdc.h unwind_prot.h ! builtins/alias.o: dispose_cmd.h make_cmd.h subst.h externs.h variables.h ! builtins/bind.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/bind.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/bind.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/bind.o: $(DEFSRC)/bashgetopt.h ! builtins/break.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/break.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/builtin.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/builtin.o: quit.h $(DEFSRC)/common.h ! builtins/builtin.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/cd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/cd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/cd.o: $(DEFSRC)/common.h quit.h ! builtins/command.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/command.o: quit.h $(DEFSRC)/bashgetopt.h ! builtins/command.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/command.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/declare.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/declare.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/echo.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/echo.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/enable.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/enable.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/enable.o: pcomplete.h ! builtins/eval.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/eval.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/eval.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/exec.o: bashtypes.h ! builtins/exec.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/exec.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h builtins/exec.o: findcmd.h flags.h quit.h $(DEFSRC)/common.h ${BASHINCDIR}/stdc.h builtins/exit.o: bashtypes.h ! builtins/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/fc.o: bashtypes.h ${BASHINCDIR}/posixstat.h builtins/fc.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}/stdc.h ! builtins/fc.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/fc.o: flags.h unwind_prot.h variables.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h quit.h builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h builtins/fg_bg.o: bashtypes.h ! builtins/fg_bg.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/fg_bg.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/getopts.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/getopts.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/hash.o: bashtypes.h builtins/hash.o: builtins.h command.h findcmd.h ${BASHINCDIR}/stdc.h $(DEFSRC)/common.h ! builtins/hash.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/hash.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h ! builtins/help.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h ! builtins/help.o: $(GLOB_LIBSRC)/glob.h builtins/history.o: bashtypes.h ! builtins/history.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/history.o: ${BASHINCDIR}/filecntl.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h ! builtins/history.o: bashhist.h variables.h ! builtins/inlib.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h ! builtins/inlib.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h quit.h builtins/inlib.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/jobs.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/jobs.o: quit.h $(DEFSRC)/bashgetopt.h ! builtins/jobs.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/kill.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/kill.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/kill.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h trap.h unwind_prot.h variables.h ! builtins/let.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/let.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/let.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/printf.o: config.h ${BASHINCDIR}/memalloc.h bashjmp.h command.h error.h ! builtins/printf.o: general.h quit.h dispose_cmd.h make_cmd.h subst.h builtins/printf.o: externs.h sig.h pathnames.h shell.h syntax.h unwind_prot.h ! builtins/printf.o: variables.h ${BASHINCDIR}/stdc.h $(DEFSRC)/bashgetopt.h ! builtins/pushd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/pushd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/pushd.o: $(DEFSRC)/common.h ! builtins/read.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/read.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h ! builtins/return.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/return.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h ! builtins/set.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/set.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h flags.h ! builtins/setattr.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/setattr.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h ! builtins/setattr.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/shift.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/shift.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/shift.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/shopt.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h builtins/shopt.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ! builtins/shopt.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h unwind_prot.h variables.h ${BASHINCDIR}/maxpath.h builtins/shopt.o: $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h ! builtins/source.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/source.o: findcmd.h ! builtins/suspend.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/suspend.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h ! builtins/test.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/test.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/test.o: test.h ! builtins/times.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/times.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h ! builtins/trap.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/trap.o: quit.h $(DEFSRC)/common.h ! builtins/trap.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/trap.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/type.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/type.o: quit.h $(DEFSRC)/common.h findcmd.h ! builtins/type.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/ulimit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/ulimit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h ! builtins/umask.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/umask.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/umask.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h ! builtins/wait.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h ${BASHINCDIR}/maxpath.h builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/wait.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h builtins/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h ! builtins/complete.o: unwind_prot.h variables.h builtins/complete.o: bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/complete.o: builtins.h --- 1063,1217 ---- # builtin def files ! builtins/alias.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/alias.o: quit.h $(DEFSRC)/common.h builtins/alias.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h ${BASHINCDIR}/stdc.h unwind_prot.h ! builtins/alias.o: dispose_cmd.h make_cmd.h subst.h externs.h variables.h arrayfunc.h conftypes.h ! builtins/bind.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/bind.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/bind.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/bind.o: $(DEFSRC)/bashgetopt.h ! builtins/break.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/break.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/builtin.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/builtin.o: quit.h $(DEFSRC)/common.h ! builtins/builtin.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/cd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/cd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/cd.o: $(DEFSRC)/common.h quit.h ! builtins/command.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/command.o: quit.h $(DEFSRC)/bashgetopt.h ! builtins/command.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/command.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/declare.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/declare.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/echo.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/echo.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/enable.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/enable.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/enable.o: pcomplete.h ! builtins/eval.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/eval.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/eval.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/exec.o: bashtypes.h ! builtins/exec.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/exec.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h builtins/exec.o: findcmd.h flags.h quit.h $(DEFSRC)/common.h ${BASHINCDIR}/stdc.h builtins/exit.o: bashtypes.h ! builtins/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/fc.o: bashtypes.h ${BASHINCDIR}/posixstat.h builtins/fc.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}/stdc.h ! builtins/fc.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/fc.o: flags.h unwind_prot.h variables.h arrayfunc.h conftypes.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h quit.h builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h + builtins/fc.o: ${BASHINCDIR}/chartypes.h builtins/fg_bg.o: bashtypes.h ! builtins/fg_bg.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/fg_bg.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/getopts.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/getopts.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/hash.o: bashtypes.h builtins/hash.o: builtins.h command.h findcmd.h ${BASHINCDIR}/stdc.h $(DEFSRC)/common.h ! builtins/hash.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/hash.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h ! builtins/help.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h ! builtins/help.o: $(GLOB_LIBSRC)/glob.h version.h builtins/history.o: bashtypes.h ! builtins/history.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/history.o: ${BASHINCDIR}/filecntl.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h ! builtins/history.o: bashhist.h variables.h arrayfunc.h conftypes.h ! builtins/inlib.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h ! builtins/inlib.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/inlib.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/jobs.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/jobs.o: quit.h $(DEFSRC)/bashgetopt.h ! builtins/jobs.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/kill.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/kill.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/kill.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h trap.h unwind_prot.h variables.h arrayfunc.h conftypes.h ! builtins/let.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/let.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/let.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/printf.o: config.h ${BASHINCDIR}/memalloc.h bashjmp.h command.h error.h ! builtins/printf.o: general.h xmalloc.h quit.h dispose_cmd.h make_cmd.h subst.h builtins/printf.o: externs.h sig.h pathnames.h shell.h syntax.h unwind_prot.h ! builtins/printf.o: variables.h arrayfunc.h conftypes.h ${BASHINCDIR}/stdc.h $(DEFSRC)/bashgetopt.h ! builtins/printf.o: ${BASHINCDIR}/chartypes.h ! builtins/pushd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/pushd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/pushd.o: $(DEFSRC)/common.h ! builtins/read.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/read.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h ! builtins/return.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/return.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h ! builtins/set.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/set.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h flags.h ! builtins/setattr.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/setattr.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h ! builtins/setattr.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/shift.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/shift.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/shift.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/shopt.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h builtins/shopt.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ! builtins/shopt.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h unwind_prot.h variables.h arrayfunc.h conftypes.h ${BASHINCDIR}/maxpath.h builtins/shopt.o: $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h ! builtins/source.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/source.o: findcmd.h ! builtins/suspend.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/suspend.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h ! builtins/test.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/test.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/test.o: test.h ! builtins/times.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/times.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h ! builtins/trap.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/trap.o: quit.h $(DEFSRC)/common.h ! builtins/trap.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/trap.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/type.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/type.o: quit.h $(DEFSRC)/common.h findcmd.h ! builtins/type.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/ulimit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/ulimit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h ! builtins/umask.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/umask.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/umask.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h ! builtins/umask.o: ${BASHINCDIR}/chartypes.h ! builtins/wait.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h ! builtins/wait.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h ! builtins/wait.o: ${BASHINCDIR}/chartypes.h builtins/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h ! builtins/complete.o: unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/complete.o: bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/complete.o: builtins.h diff -Nrc2 bash-2.05/NEWS bash-2.05a/NEWS *** bash-2.05/NEWS Wed Apr 4 10:44:08 2001 --- bash-2.05a/NEWS Tue Oct 30 16:02:14 2001 *************** *** 1,2 **** --- 1,95 ---- + This is a terse description of the new features added to bash-2.05a since + the release of bash-2.05. As always, the manual page (doc/bash.1) is + the place to look for complete descriptions. + + 1. New Features in Bash + + a. Added support for DESTDIR installation root prefix, so you can do a + `make install DESTDIR=bash-root' and do easier binary packaging. + + b. Added support for builtin printf "'" flag character as per latest POSIX + drafts. + + c. Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from + ISO C99). + + d. New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications + (bash doesn't use very much of what it returns). + + e. `set [-+]o nolog' is recognized as required by the latest POSIX drafts, + but ignored. + + f. New read-only `shopt' option: login_shell. Set to non-zero value if the + shell is a login shell. + + g. New `\A' prompt string escape sequence; expands to time in 24 HH:MM format. + + h. New `-A group/-g' option to complete and compgen; does group name + completion. + + i. New `-t' option to `hash' to list hash values for each filename argument. + + j. New [-+]O invocation option to set and unset `shopt' options at startup. + + k. configure's `--with-installed-readline' option now takes an optional + `=PATH' suffix to set the root of the tree where readline is installed + to PATH. + + l. The ksh-like `ERR' trap has been added. The `ERR' trap will be run + whenever the shell would have exited if the -e option were enabled. + It is not inherited by shell functions. + + m. `readonly', `export', and `declare' now print variables which have been + given attributes but not set by assigning a value as just a command and + a variable name (like `export foo') when listing, as the latest POSIX + drafts require. + + n. `bashbug' now requires that the subject be changed from the default. + + o. configure has a new `--enable-largefile' option, like other GNU utilities. + + p. `for' loops now allow empty word lists after `in', like the latest POSIX + drafts require. + + q. The builtin `ulimit' now takes two new non-numeric arguments: `hard', + meaning the current hard limit, and `soft', meaning the current soft + limit, in addition to `unlimited' + + r. `ulimit' now prints the option letter associated with a particular + resource when printing more than one limit. + + s. `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is + one of RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively. + + t. The `printf' builtin now handles the %a and %A conversions if they're + implemented by printf(3). + + u. The `printf' builtin now handles the %F conversion (just about like %f). + + v. The `printf' builtin now handles the %n conversion like printf(3). The + corresponding argument is the name of a shell variable to which the + value is assigned. + + 2. New Features in Readline + + a. Added extern declaration for rl_get_termcap to readline.h, making it a + public function (it was always there, just not in readline.h). + + b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402, + RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2. + + c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION. + + d. New bindable boolean readline variable: match-hidden-files. Controls + completion of files beginning with a `.' (on Unix). Enabled by default. + + e. The history expansion code now allows any character to terminate a + `:first-' modifier, like csh. + + f. New bindable variable `history-preserve-point'. If set, the history + code attempts to place the user at the same location on each history + line retrived with previous-history or next-history. + + ------------------------------------------------------------------------------- This is a terse description of the new features added to bash-2.05 since the release of bash-2.04. As always, the manual page (doc/bash.1) is *************** *** 88,92 **** f. There are several new arithmetic operators: id++, id-- (variable ! post-increment/decrement), ++id, --id (variabl pre-increment/decrement), expr1 , expr2 (comma operator). --- 181,185 ---- f. There are several new arithmetic operators: id++, id-- (variable ! post-increment/decrement), ++id, --id (variable pre-increment/decrement), expr1 , expr2 (comma operator). diff -Nrc2 bash-2.05/NOTES bash-2.05a/NOTES *** bash-2.05/NOTES Wed Apr 4 11:07:16 2001 --- bash-2.05a/NOTES Tue Nov 13 10:32:22 2001 *************** *** 211,215 **** `cr: not found' when library construction is attempted. ! 11. Building a statically-linked bash on Solaris 2.5.x, 2.6, or 7 is complicated. --- 211,215 ---- `cr: not found' when library construction is attempted. ! 11. Building a statically-linked bash on Solaris 2.5.x, 2.6, 7, or 8 is complicated. *************** *** 253,261 **** libdl.so.1 => /etc/lib/libdl.so.1 ! On Solaris 7 (and presumably Solaris 8, though I do not run that), the ! following recipe appears to work for gcc: configure --enable-static-link ! make STATIC_LD='-Wl,-Bstatic' LOCAL_LIBS='Wl,-Bdynamic -Wl,-R/etc/lib -ldl -Wl,-Bstatic' thor.ins.cwru.edu(2)$ ldd bash --- 253,261 ---- libdl.so.1 => /etc/lib/libdl.so.1 ! On Solaris 7 (Solaris 8, using the version of gcc on the free software ! CD-ROM), the following recipe appears to work for gcc: configure --enable-static-link ! make STATIC_LD='-Wl,-Bstatic' LOCAL_LIBS='-Wl,-Bdynamic -Wl,-R/etc/lib -ldl -Wl,-Bstatic' thor.ins.cwru.edu(2)$ ldd bash *************** *** 264,267 **** --- 264,270 ---- Make the analogous changes if you are running Sun's C Compiler. + I have received word that adding -L/etc/lib (or the equivalent + -Wl,-L/etc/lib) might also be necessary, in addition to the -R/etc/lib. + 12. Configuring bash to build it in a cross environment. Currently only two native versions can be compiled this way, cygwin32 and x86 BeOS. *************** *** 310,312 **** --- 313,328 ---- Users may put the above command into their own profiles as well, of course. + 14. Building on Interix (nee OpenNT), which Microsoft bought from Softway + Systems and has seemingly abandoned (thanks to Kevin Moore for this item). + + 1. cp cross-build/opennt.cache config.cache + + 2. If desired, edit pathnames.h to set the values of SYS_PROFILE and + DEFAULT_HOSTS_FILE appropriately. + + 3. export CONFIG_SHELL=$INTERIX_ROOT/bin/sh + + 4. ./configure --prefix=$INTERIX_ROOT/usr/local (or wherever you + want it). + 5. make; make install; enjoy diff -Nrc2 bash-2.05/README bash-2.05a/README *** bash-2.05/README Mon Mar 26 11:25:33 2001 --- bash-2.05a/README Wed Aug 22 13:27:17 2001 *************** *** 2,6 **** ============ ! This is GNU Bash, version 2.05. Bash is the GNU Project's Bourne Again SHell, a complete implementation of the POSIX.2 shell spec, but also with interactive command line editing, job control on --- 2,6 ---- ============ ! This is GNU Bash, version 2.05a. Bash is the GNU Project's Bourne Again SHell, a complete implementation of the POSIX.2 shell spec, but also with interactive command line editing, job control on *************** *** 20,25 **** features that are new in this release. ! Bash is free software, distributed under the terms of the GNU Public ! License, version 2. For more information, see the file COPYING. A number of frequently-asked questions are answered in the file --- 20,26 ---- features that are new in this release. ! Bash is free software, distributed under the terms of the [GNU] ! General Public License, version 2. For more information, see the ! file COPYING. A number of frequently-asked questions are answered in the file diff -Nrc2 bash-2.05/aclocal.m4 bash-2.05a/aclocal.m4 *** bash-2.05/aclocal.m4 Tue Nov 21 10:42:10 2000 --- bash-2.05a/aclocal.m4 Wed Nov 7 10:59:37 2001 *************** *** 4,143 **** dnl Some derived from PDKSH 5.1.3 autoconf tests dnl ! dnl ! dnl Check if dup2() does not clear the close on exec flag ! dnl ! AC_DEFUN(BASH_DUP2_CLOEXEC_CHECK, ! [AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) ! AC_CACHE_VAL(bash_cv_dup2_broken, ! [AC_TRY_RUN([ ! #include ! #include main() { ! int fd1, fd2, fl; ! fd1 = open("/dev/null", 2); ! if (fcntl(fd1, 2, 1) < 0) ! exit(1); ! fd2 = dup2(fd1, 1); ! if (fd2 < 0) ! exit(2); ! fl = fcntl(fd2, 1, 0); ! /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ ! exit(fl != 1); } ! ], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, ! [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) ! bash_cv_dup2_broken=no]) ! ]) ! AC_MSG_RESULT($bash_cv_dup2_broken) ! if test $bash_cv_dup2_broken = yes; then ! AC_DEFINE(DUP2_BROKEN) ! fi ! ]) ! ! dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) ! AC_DEFUN(BASH_SIGNAL_CHECK, ! [AC_REQUIRE([AC_TYPE_SIGNAL]) ! AC_MSG_CHECKING(for type of signal functions) ! AC_CACHE_VAL(bash_cv_signal_vintage, ! [ ! AC_TRY_LINK([#include ],[ ! sigset_t ss; ! struct sigaction sa; ! sigemptyset(&ss); sigsuspend(&ss); ! sigaction(SIGINT, &sa, (struct sigaction *) 0); ! sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); ! ], bash_cv_signal_vintage=posix, ! [ ! AC_TRY_LINK([#include ], [ ! int mask = sigmask(SIGINT); ! sigsetmask(mask); sigblock(mask); sigpause(mask); ! ], bash_cv_signal_vintage=4.2bsd, ! [ ! AC_TRY_LINK([ ! #include ! RETSIGTYPE foo() { }], [ ! int mask = sigmask(SIGINT); ! sigset(SIGINT, foo); sigrelse(SIGINT); ! sighold(SIGINT); sigpause(SIGINT); ! ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7 ! )] ! )] ! ) ! ]) ! AC_MSG_RESULT($bash_cv_signal_vintage) ! if test "$bash_cv_signal_vintage" = posix; then ! AC_DEFINE(HAVE_POSIX_SIGNALS) ! elif test "$bash_cv_signal_vintage" = "4.2bsd"; then ! AC_DEFINE(HAVE_BSD_SIGNALS) ! elif test "$bash_cv_signal_vintage" = svr3; then ! AC_DEFINE(HAVE_USG_SIGHOLD) fi ]) ! dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. ! AC_DEFUN(BASH_PGRP_SYNC, ! [AC_REQUIRE([AC_FUNC_GETPGRP]) ! AC_MSG_CHECKING(whether pgrps need synchronization) ! AC_CACHE_VAL(bash_cv_pgrp_pipe, ! [AC_TRY_RUN([ ! #ifdef HAVE_UNISTD_H ! # include ! #endif main() { ! # ifdef GETPGRP_VOID ! # define getpgID() getpgrp() ! # else ! # define getpgID() getpgrp(0) ! # define setpgid(x,y) setpgrp(x,y) ! # endif ! int pid1, pid2, fds[2]; ! int status; ! char ok; ! ! switch (pid1 = fork()) { ! case -1: ! exit(1); ! case 0: ! setpgid(0, getpid()); ! exit(0); ! } ! setpgid(pid1, pid1); ! ! sleep(2); /* let first child die */ ! ! if (pipe(fds) < 0) ! exit(2); ! ! switch (pid2 = fork()) { ! case -1: ! exit(3); ! case 0: ! setpgid(0, pid1); ! ok = getpgID() == pid1; ! write(fds[1], &ok, 1); ! exit(0); ! } ! setpgid(pid2, pid1); ! ! close(fds[1]); ! if (read(fds[0], &ok, 1) != 1) ! exit(4); ! wait(&status); ! wait(&status); ! exit(ok ? 0 : 5); } ! ], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, ! [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) ! bash_cv_pgrp_pipe=no]) ! ]) ! AC_MSG_RESULT($bash_cv_pgrp_pipe) ! if test $bash_cv_pgrp_pipe = yes; then ! AC_DEFINE(PGRP_PIPE) fi ]) dnl dnl check for typedef'd symbols in header files, but allow the caller to dnl specify the include files to be checked in addition to the default --- 4,66 ---- dnl Some derived from PDKSH 5.1.3 autoconf tests dnl ! ! AC_DEFUN(BASH_C_LONG_LONG, ! [AC_CACHE_CHECK(for long long, ac_cv_c_long_long, ! [if test "$GCC" = yes; then ! ac_cv_c_long_long=yes ! else ! AC_TRY_RUN([ ! int main() { ! long long foo = 0; ! exit(sizeof(long long) < sizeof(long)); } ! ], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) ! fi]) ! if test $ac_cv_c_long_long = yes; then ! AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) fi ]) ! dnl ! dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX ! dnl (< changed to <=) added. ! dnl ! AC_DEFUN(BASH_C_LONG_DOUBLE, ! [AC_CACHE_CHECK(for long double, ac_cv_c_long_double, ! [if test "$GCC" = yes; then ! ac_cv_c_long_double=yes ! else ! AC_TRY_RUN([ ! int main() { ! /* The Stardent Vistra knows sizeof(long double), but does not ! support it. */ ! long double foo = 0.0; ! /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ ! /* On IRIX 5.3, the compiler converts long double to double with a warning, ! but compiles this successfully. */ ! exit(sizeof(long double) <= sizeof(double)); } ! ], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) ! fi]) ! if test $ac_cv_c_long_double = yes; then ! AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) fi ]) dnl + dnl Check for . This is separated out so that it can be + dnl AC_REQUIREd. + dnl + dnl BASH_HEADER_INTTYPES + AC_DEFUN(BASH_HEADER_INTTYPES, + [ + AC_CHECK_HEADERS(inttypes.h) + ]) + + dnl dnl check for typedef'd symbols in header files, but allow the caller to dnl specify the include files to be checked in addition to the default *************** *** 145,149 **** dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) AC_DEFUN(BASH_CHECK_TYPE, ! [AC_REQUIRE([AC_HEADER_STDC])dnl AC_MSG_CHECKING(for $1) AC_CACHE_VAL(bash_cv_type_$1, --- 68,74 ---- dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) AC_DEFUN(BASH_CHECK_TYPE, ! [ ! AC_REQUIRE([AC_HEADER_STDC])dnl ! AC_REQUIRE([BASH_HEADER_INTTYPES]) AC_MSG_CHECKING(for $1) AC_CACHE_VAL(bash_cv_type_$1, *************** *** 151,154 **** --- 76,83 ---- #if STDC_HEADERS #include + #include + #endif + #if HAVE_INTTYPES_H + #include #endif $2 *************** *** 159,199 **** fi]) if test $bash_cv_type_$1 = no; then ! AC_DEFINE($1, $3) fi ]) dnl ! dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) ! dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use ! dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify ! dnl matters, this just checks for rlim_t, quad_t, or long. dnl ! AC_DEFUN(BASH_RLIMIT_TYPE, ! [AC_MSG_CHECKING(for size and type of struct rlimit fields) ! AC_CACHE_VAL(bash_cv_type_rlimit, ! [AC_TRY_COMPILE([#include ! #include ], ! [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ ! AC_TRY_RUN([ ! #include ! #include ! #include main() { ! #ifdef HAVE_QUAD_T ! struct rlimit rl; ! if (sizeof(rl.rlim_cur) == sizeof(quad_t)) ! exit(0); ! #endif ! exit(1); ! }], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, ! [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) ! bash_cv_type_rlimit=long])]) ]) ! AC_MSG_RESULT($bash_cv_type_rlimit) ! if test $bash_cv_type_rlimit = quad_t; then ! AC_DEFINE(RLIMTYPE, quad_t) ! elif test $bash_cv_type_rlimit = rlim_t; then ! AC_DEFINE(RLIMTYPE, rlim_t) fi ]) --- 88,159 ---- fi]) if test $bash_cv_type_$1 = no; then ! AC_DEFINE_UNQUOTED($1, $3) fi ]) dnl ! dnl BASH_CHECK_DECL(FUNC) dnl ! dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like ! dnl AC_CHECK_DECL ! dnl ! AC_DEFUN(BASH_CHECK_DECL, ! [ ! AC_REQUIRE([AC_HEADER_STDC]) ! AC_REQUIRE([BASH_HEADER_INTTYPES]) ! AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, ! [AC_TRY_LINK( ! [ ! #if STDC_HEADERS ! # include ! #endif ! #if HAVE_INTTYPES_H ! # include ! #endif ! ], ! [return !$1;], ! bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) ! bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! if test $bash_cv_decl_$1 = yes; then ! AC_DEFINE_UNQUOTED($bash_tr_func, 1) ! else ! AC_DEFINE_UNQUOTED($bash_tr_func, 0) ! fi ! ]) ! ! AC_DEFUN(BASH_DECL_PRINTF, ! [AC_MSG_CHECKING(for declaration of printf in ) ! AC_CACHE_VAL(bash_cv_printf_declared, ! [AC_TRY_RUN([ ! #include ! #ifdef __STDC__ ! typedef int (*_bashfunc)(const char *, ...); ! #else ! typedef int (*_bashfunc)(); ! #endif main() { ! _bashfunc pf; ! pf = (_bashfunc) printf; ! exit(pf == 0); ! } ! ], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, ! [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) ! bash_cv_printf_declared=yes] ! )]) ! AC_MSG_RESULT($bash_cv_printf_declared) ! if test $bash_cv_printf_declared = yes; then ! AC_DEFINE(PRINTF_DECLARED) ! fi ]) ! ! AC_DEFUN(BASH_DECL_SBRK, ! [AC_MSG_CHECKING(for declaration of sbrk in ) ! AC_CACHE_VAL(bash_cv_sbrk_declared, ! [AC_EGREP_HEADER(sbrk, unistd.h, ! bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) ! AC_MSG_RESULT($bash_cv_sbrk_declared) ! if test $bash_cv_sbrk_declared = yes; then ! AC_DEFINE(SBRK_DECLARED) fi ]) *************** *** 273,276 **** --- 233,250 ---- ]) + dnl Check for the various permutations of sys_siglist and make sure we + dnl compile in siglist.o if they're not defined + AC_DEFUN(BASH_CHECK_SYS_SIGLIST, [ + AC_REQUIRE([BASH_SYS_SIGLIST]) + AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) + AC_REQUIRE([BASH_FUNC_STRSIGNAL]) + if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then + SIGLIST_O=siglist.o + else + SIGLIST_O= + fi + AC_SUBST([SIGLIST_O]) + ]) + dnl Check for sys_errlist[] and sys_nerr, check for declaration AC_DEFUN(BASH_SYS_ERRLIST, *************** *** 288,291 **** --- 262,310 ---- ]) + dnl + dnl Check if dup2() does not clear the close on exec flag + dnl + AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK, + [AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) + AC_CACHE_VAL(bash_cv_dup2_broken, + [AC_TRY_RUN([ + #include + #include + main() + { + int fd1, fd2, fl; + fd1 = open("/dev/null", 2); + if (fcntl(fd1, 2, 1) < 0) + exit(1); + fd2 = dup2(fd1, 1); + if (fd2 < 0) + exit(2); + fl = fcntl(fd2, 1, 0); + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ + exit(fl != 1); + } + ], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, + [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) + bash_cv_dup2_broken=no]) + ]) + AC_MSG_RESULT($bash_cv_dup2_broken) + if test $bash_cv_dup2_broken = yes; then + AC_DEFINE(DUP2_BROKEN) + fi + ]) + + AC_DEFUN(BASH_FUNC_STRSIGNAL, + [AC_MSG_CHECKING([for the existence of strsignal]) + AC_CACHE_VAL(bash_cv_have_strsignal, + [AC_TRY_LINK([#include + #include ], + [char *s = (char *)strsignal(2);], + bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) + AC_MSG_RESULT($bash_cv_have_strsignal) + if test $bash_cv_have_strsignal = yes; then + AC_DEFINE(HAVE_STRSIGNAL) + fi + ]) + dnl Check to see if opendir will open non-directories (not a nice thing) AC_DEFUN(BASH_FUNC_OPENDIR_CHECK, *************** *** 423,426 **** --- 442,447 ---- elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then AC_CHECK_TYPE(ptrdiff_t, long) + elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, [long long]) else AC_CHECK_TYPE(ptrdiff_t, int) *************** *** 433,440 **** AC_DEFUN(BASH_TYPE_BITS64_T, [ ! if test "$ac_sv_sizeof_char_p" = 8; then AC_CHECK_TYPE(bits64_t, char *) elif test "$ac_cv_sizeof_double" = 8; then AC_CHECK_TYPE(bits64_t, double) elif test "$ac_cv_sizeof_long" = 8; then AC_CHECK_TYPE(bits64_t, long) --- 454,463 ---- AC_DEFUN(BASH_TYPE_BITS64_T, [ ! if test "$ac_cv_sizeof_char_p" = 8; then AC_CHECK_TYPE(bits64_t, char *) elif test "$ac_cv_sizeof_double" = 8; then AC_CHECK_TYPE(bits64_t, double) + elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then + AC_CHECK_TYPE(bits64_t, [long long]) elif test "$ac_cv_sizeof_long" = 8; then AC_CHECK_TYPE(bits64_t, long) *************** *** 444,457 **** ]) ! AC_DEFUN(BASH_FUNC_STRSIGNAL, ! [AC_MSG_CHECKING([for the existence of strsignal]) ! AC_CACHE_VAL(bash_cv_have_strsignal, ! [AC_TRY_LINK([#include ! #include ], ! [char *s = (char *)strsignal(2);], ! bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) ! AC_MSG_RESULT($bash_cv_have_strsignal) ! if test $bash_cv_have_strsignal = yes; then ! AC_DEFINE(HAVE_STRSIGNAL) fi ]) --- 467,532 ---- ]) ! AC_DEFUN(BASH_TYPE_LONG_LONG, ! [ ! AC_CACHE_CHECK([for long long], bash_cv_type_long_long, ! [AC_TRY_LINK([ ! long long ll = 1; int i = 63;], ! [ ! long long llm = (long long) -1; ! return ll << i | ll >> i | llm / ll | llm % ll; ! ], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) ! if test "$bash_cv_type_long_long" = 'long long'; then ! AC_DEFINE(HAVE_LONG_LONG, 1) ! fi ! ]) ! ! AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG, ! [ ! AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, ! [AC_TRY_LINK([ ! unsigned long long ull = 1; int i = 63;], ! [ ! unsigned long long ullmax = (unsigned long long) -1; ! return ull << i | ull >> i | ullmax / ull | ullmax % ull; ! ], bash_cv_type_unsigned_long_long='unsigned long long', ! bash_cv_type_unsigned_long_long='unsigned long')]) ! if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then ! AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) ! fi ! ]) ! ! dnl ! dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) ! dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use ! dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify ! dnl matters, this just checks for rlim_t, quad_t, or long. ! dnl ! AC_DEFUN(BASH_TYPE_RLIMIT, ! [AC_MSG_CHECKING(for size and type of struct rlimit fields) ! AC_CACHE_VAL(bash_cv_type_rlimit, ! [AC_TRY_COMPILE([#include ! #include ], ! [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ ! AC_TRY_RUN([ ! #include ! #include ! #include ! main() ! { ! #ifdef HAVE_QUAD_T ! struct rlimit rl; ! if (sizeof(rl.rlim_cur) == sizeof(quad_t)) ! exit(0); ! #endif ! exit(1); ! }], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, ! [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) ! bash_cv_type_rlimit=long])]) ! ]) ! AC_MSG_RESULT($bash_cv_type_rlimit) ! if test $bash_cv_type_rlimit = quad_t; then ! AC_DEFINE(RLIMTYPE, quad_t) ! elif test $bash_cv_type_rlimit = rlim_t; then ! AC_DEFINE(RLIMTYPE, rlim_t) fi ]) *************** *** 482,509 **** if test $bash_cv_func_inet_aton = yes; then AC_DEFINE(HAVE_INET_ATON) ! fi ! ]) ! ! AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC, ! [AC_MSG_CHECKING([for a c_line member of struct termios]) ! AC_CACHE_VAL(bash_cv_termios_ldisc, ! [AC_TRY_COMPILE([#include ! #include ],[struct termios t; int i; i = t.c_line;], ! bash_cv_termios_ldisc=yes, bash_cv_termios_ldisc=no)])dnl ! AC_MSG_RESULT($bash_cv_termios_ldisc) ! if test $bash_cv_termios_ldisc = yes; then ! AC_DEFINE(TERMIOS_LDISC) ! fi ! ]) ! ! AC_DEFUN(BASH_STRUCT_TERMIO_LDISC, ! [AC_MSG_CHECKING([for a c_line member of struct termio]) ! AC_CACHE_VAL(bash_cv_termio_ldisc, ! [AC_TRY_COMPILE([#include ! #include ],[struct termio t; int i; i = t.c_line;], ! bash_cv_termio_ldisc=yes, bash_cv_termio_ldisc=no)])dnl ! AC_MSG_RESULT($bash_cv_termio_ldisc) ! if test $bash_cv_termio_ldisc = yes; then ! AC_DEFINE(TERMIO_LDISC) fi ]) --- 557,562 ---- if test $bash_cv_func_inet_aton = yes; then AC_DEFINE(HAVE_INET_ATON) ! else ! AC_LIBOBJ(inet_aton) fi ]) *************** *** 553,582 **** ]) - AC_DEFUN(BASH_FUNC_PRINTF, - [AC_MSG_CHECKING(for declaration of printf in ) - AC_CACHE_VAL(bash_cv_printf_declared, - [AC_TRY_RUN([ - #include - #ifdef __STDC__ - typedef int (*_bashfunc)(const char *, ...); - #else - typedef int (*_bashfunc)(); - #endif - main() - { - _bashfunc pf; - pf = (_bashfunc) printf; - exit(pf == 0); - } - ], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, - [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) - bash_cv_printf_declared=yes] - )]) - AC_MSG_RESULT($bash_cv_printf_declared) - if test $bash_cv_printf_declared = yes; then - AC_DEFINE(PRINTF_DECLARED) - fi - ]) - AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS, [AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) --- 606,609 ---- *************** *** 598,634 **** ]) - AC_DEFUN(BASH_CHECK_LIB_TERMCAP, - [ - if test "X$bash_cv_termcap_lib" = "X"; then - _bash_needmsg=yes - else - AC_MSG_CHECKING(which library has the termcap functions) - _bash_needmsg= - fi - AC_CACHE_VAL(bash_cv_termcap_lib, - [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, - [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, - [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, - bash_cv_termcap_lib=gnutermcap)])])]) - if test "X$_bash_needmsg" = "Xyes"; then - AC_MSG_CHECKING(which library has the termcap functions) - fi - AC_MSG_RESULT(using $bash_cv_termcap_lib) - if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then - LDFLAGS="$LDFLAGS -L./lib/termcap" - TERMCAP_LIB="./lib/termcap/libtermcap.a" - TERMCAP_DEP="./lib/termcap/libtermcap.a" - elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then - TERMCAP_LIB=-ltermcap - TERMCAP_DEP= - elif test $bash_cv_termcap_lib = libncurses; then - TERMCAP_LIB=-lncurses - TERMCAP_DEP= - else - TERMCAP_LIB=-lcurses - TERMCAP_DEP= - fi - ]) - AC_DEFUN(BASH_FUNC_GETCWD, [AC_MSG_CHECKING([if getcwd() calls popen()]) --- 625,628 ---- *************** *** 692,695 **** --- 686,1000 ---- if test $bash_cv_getcwd_calls_popen = yes; then AC_DEFINE(GETCWD_BROKEN) + AC_LIBOBJ(getcwd) + fi + ]) + + dnl + dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every + dnl system, we can't use AC_PREREQ + dnl + AC_DEFUN(BASH_FUNC_GETHOSTBYNAME, + [if test "X$bash_cv_have_gethostbyname" = "X"; then + _bash_needmsg=yes + else + AC_MSG_CHECKING(for gethostbyname in socket library) + _bash_needmsg= + fi + AC_CACHE_VAL(bash_cv_have_gethostbyname, + [AC_TRY_LINK([#include ], + [ struct hostent *hp; + hp = gethostbyname("localhost"); + ], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] + ) + if test "X$_bash_needmsg" = Xyes; then + AC_MSG_CHECKING(for gethostbyname in socket library) + fi + AC_MSG_RESULT($bash_cv_have_gethostbyname) + if test "$bash_cv_have_gethostbyname" = yes; then + AC_DEFINE(HAVE_GETHOSTBYNAME) + fi + ]) + + AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH, + [AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) + AC_CACHE_VAL(bash_cv_fnm_extmatch, + [AC_TRY_RUN([ + #include + + main() + { + #ifdef FNM_EXTMATCH + exit (0); + #else + exit (1); + #endif + } + ], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, + [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) + bash_cv_fnm_extmatch=no]) + ]) + AC_MSG_RESULT($bash_cv_fnm_extmatch) + if test $bash_cv_fnm_extmatch = yes; then + AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) + fi + ]) + + AC_DEFUN(BASH_FUNC_POSIX_SETJMP, + [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) + AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) + AC_CACHE_VAL(bash_cv_func_sigsetjmp, + [AC_TRY_RUN([ + #ifdef HAVE_UNISTD_H + #include + #endif + #include + #include + #include + + main() + { + #if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) + exit (1); + #else + + int code; + sigset_t set, oset; + sigjmp_buf xx; + + /* get the mask */ + sigemptyset(&set); + sigemptyset(&oset); + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); + + /* save it */ + code = sigsetjmp(xx, 1); + if (code) + exit(0); /* could get sigmask and compare to oset here. */ + + /* change it */ + sigaddset(&set, SIGINT); + sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); + + /* and siglongjmp */ + siglongjmp(xx, 10); + exit(1); + #endif + }], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, + [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) + bash_cv_func_sigsetjmp=missing] + )]) + AC_MSG_RESULT($bash_cv_func_sigsetjmp) + if test $bash_cv_func_sigsetjmp = present; then + AC_DEFINE(HAVE_POSIX_SIGSETJMP) + fi + ]) + + AC_DEFUN(BASH_FUNC_STRCOLL, + [ + AC_MSG_CHECKING(whether or not strcoll and strcmp differ) + AC_CACHE_VAL(bash_cv_func_strcoll_broken, + [AC_TRY_RUN([ + #include + #if defined (HAVE_LOCALE_H) + #include + #endif + + main(c, v) + int c; + char *v[]; + { + int r1, r2; + char *deflocale, *defcoll; + + #ifdef HAVE_SETLOCALE + deflocale = setlocale(LC_ALL, ""); + defcoll = setlocale(LC_COLLATE, ""); + #endif + + #ifdef HAVE_STRCOLL + /* These two values are taken from tests/glob-test. */ + r1 = strcoll("abd", "aXd"); + #else + r1 = 0; + #endif + r2 = strcmp("abd", "aXd"); + + /* These two should both be greater than 0. It is permissible for + a system to return different values, as long as the sign is the + same. */ + + /* Exit with 1 (failure) if these two values are both > 0, since + this tests whether strcoll(3) is broken with respect to strcmp(3) + in the default locale. */ + exit (r1 > 0 && r2 > 0); + } + ], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, + [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) + bash_cv_func_strcoll_broken=no] + )]) + AC_MSG_RESULT($bash_cv_func_strcoll_broken) + if test $bash_cv_func_strcoll_broken = yes; then + AC_DEFINE(STRCOLL_BROKEN) + fi + ]) + + AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT, + [AC_MSG_CHECKING([for printf floating point output in hex notation]) + AC_CACHE_VAL(bash_cv_printf_a_format, + [AC_TRY_RUN([ + #include + #include + + int + main() + { + double y = 0.0; + char abuf[1024]; + + sprintf(abuf, "%A", y); + exit(strchr(abuf, 'P') == (char *)0); + } + ], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, + [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) + bash_cv_printf_a_format=no] + )]) + AC_MSG_RESULT($bash_cv_printf_a_format) + if test $bash_cv_printf_a_format = yes; then + AC_DEFINE(HAVE_PRINTF_A_FORMAT) + fi + ]) + + AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC, + [ + AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[ + #include + #include + ]) + ]) + + AC_DEFUN(BASH_STRUCT_TERMIO_LDISC, + [ + AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[ + #include + #include + ]) + ]) + + dnl + dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS + dnl + dnl sets bash_cv_struct_stat_st_blocks + dnl + dnl unused for now; we'll see how AC_CHECK_MEMBERS works + dnl + AC_DEFUN(BASH_STRUCT_ST_BLOCKS, + [ + AC_MSG_CHECKING([for struct stat.st_blocks]) + AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, + [AC_TRY_COMPILE( + [ + #include + #include + ], + [ + main() + { + static struct stat a; + if (a.st_blocks) return 0; + return 0; + } + ], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) + ]) + AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) + if test "$bash_cv_struct_stat_st_blocks" = "yes"; then + AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) + fi + ]) + + AC_DEFUN(BASH_CHECK_LIB_TERMCAP, + [ + if test "X$bash_cv_termcap_lib" = "X"; then + _bash_needmsg=yes + else + AC_MSG_CHECKING(which library has the termcap functions) + _bash_needmsg= + fi + AC_CACHE_VAL(bash_cv_termcap_lib, + [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, + [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcal_lib=libtinfo, + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])])])]) + if test "X$_bash_needmsg" = "Xyes"; then + AC_MSG_CHECKING(which library has the termcap functions) + fi + AC_MSG_RESULT(using $bash_cv_termcap_lib) + if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then + LDFLAGS="$LDFLAGS -L./lib/termcap" + TERMCAP_LIB="./lib/termcap/libtermcap.a" + TERMCAP_DEP="./lib/termcap/libtermcap.a" + elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then + TERMCAP_LIB=-ltermcap + TERMCAP_DEP= + elif test $bash_cv_termcap_lib = libtinfo; then + TERMCAP_LIB=-ltinfo + TERMCAP_DEP= + elif test $bash_cv_termcap_lib = libncurses; then + TERMCAP_LIB=-lncurses + TERMCAP_DEP= + else + TERMCAP_LIB=-lcurses + TERMCAP_DEP= + fi + ]) + + dnl + dnl Check for the presence of getpeername in libsocket. + dnl If libsocket is present, check for libnsl and add it to LIBS if + dnl it's there, since most systems with libsocket require linking + dnl with libnsl as well. This should only be called if getpeername + dnl was not found in libc. + dnl + dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT + dnl AS WELL + dnl + AC_DEFUN(BASH_CHECK_LIB_SOCKET, + [ + if test "X$bash_cv_have_socklib" = "X"; then + _bash_needmsg= + else + AC_MSG_CHECKING(for socket library) + _bash_needmsg=yes + fi + AC_CACHE_VAL(bash_cv_have_socklib, + [AC_CHECK_LIB(socket, getpeername, + bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) + if test "X$_bash_needmsg" = Xyes; then + AC_MSG_RESULT($bash_cv_have_socklib) + _bash_needmsg= + fi + if test $bash_cv_have_socklib = yes; then + # check for libnsl, add it to LIBS if present + if test "X$bash_cv_have_libnsl" = "X"; then + _bash_needmsg= + else + AC_MSG_CHECKING(for libnsl) + _bash_needmsg=yes + fi + AC_CACHE_VAL(bash_cv_have_libnsl, + [AC_CHECK_LIB(nsl, t_open, + bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) + if test "X$_bash_needmsg" = Xyes; then + AC_MSG_RESULT($bash_cv_have_libnsl) + _bash_needmsg= + fi + if test $bash_cv_have_libnsl = yes; then + LIBS="-lsocket -lnsl $LIBS" + else + LIBS="-lsocket $LIBS" + fi + AC_DEFINE(HAVE_LIBSOCKET) + AC_DEFINE(HAVE_GETPEERNAME) fi ]) *************** *** 761,767 **** ]) ! AC_DEFUN(BASH_REINSTALL_SIGHANDLERS, [AC_REQUIRE([AC_TYPE_SIGNAL]) ! AC_REQUIRE([BASH_SIGNAL_CHECK]) AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, --- 1066,1212 ---- ]) ! AC_DEFUN(BASH_STRUCT_TIMEVAL, ! [AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) ! AC_CACHE_VAL(bash_cv_struct_timeval, ! [ ! AC_EGREP_HEADER(struct timeval, sys/time.h, ! bash_cv_struct_timeval=yes, ! AC_EGREP_HEADER(struct timeval, time.h, ! bash_cv_struct_timeval=yes, ! bash_cv_struct_timeval=no)) ! ]) ! AC_MSG_RESULT($bash_cv_struct_timeval) ! if test $bash_cv_struct_timeval = yes; then ! AC_DEFINE(HAVE_TIMEVAL) ! fi ! ]) ! ! AC_DEFUN(BASH_STRUCT_WINSIZE, ! [AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) ! AC_CACHE_VAL(bash_cv_struct_winsize_header, ! [AC_TRY_COMPILE([#include ! #include ], [struct winsize x;], ! bash_cv_struct_winsize_header=ioctl_h, ! [AC_TRY_COMPILE([#include ! #include ], [struct winsize x;], ! bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) ! ])]) ! if test $bash_cv_struct_winsize_header = ioctl_h; then ! AC_MSG_RESULT(sys/ioctl.h) ! AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) ! elif test $bash_cv_struct_winsize_header = termios_h; then ! AC_MSG_RESULT(termios.h) ! AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) ! else ! AC_MSG_RESULT(not found) ! fi ! ]) ! ! dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) ! AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE, ! [AC_REQUIRE([AC_TYPE_SIGNAL]) ! AC_MSG_CHECKING(for type of signal functions) ! AC_CACHE_VAL(bash_cv_signal_vintage, ! [ ! AC_TRY_LINK([#include ],[ ! sigset_t ss; ! struct sigaction sa; ! sigemptyset(&ss); sigsuspend(&ss); ! sigaction(SIGINT, &sa, (struct sigaction *) 0); ! sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); ! ], bash_cv_signal_vintage=posix, ! [ ! AC_TRY_LINK([#include ], [ ! int mask = sigmask(SIGINT); ! sigsetmask(mask); sigblock(mask); sigpause(mask); ! ], bash_cv_signal_vintage=4.2bsd, ! [ ! AC_TRY_LINK([ ! #include ! RETSIGTYPE foo() { }], [ ! int mask = sigmask(SIGINT); ! sigset(SIGINT, foo); sigrelse(SIGINT); ! sighold(SIGINT); sigpause(SIGINT); ! ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7 ! )] ! )] ! ) ! ]) ! AC_MSG_RESULT($bash_cv_signal_vintage) ! if test "$bash_cv_signal_vintage" = posix; then ! AC_DEFINE(HAVE_POSIX_SIGNALS) ! elif test "$bash_cv_signal_vintage" = "4.2bsd"; then ! AC_DEFINE(HAVE_BSD_SIGNALS) ! elif test "$bash_cv_signal_vintage" = svr3; then ! AC_DEFINE(HAVE_USG_SIGHOLD) ! fi ! ]) ! ! dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. ! AC_DEFUN(BASH_SYS_PGRP_SYNC, ! [AC_REQUIRE([AC_FUNC_GETPGRP]) ! AC_MSG_CHECKING(whether pgrps need synchronization) ! AC_CACHE_VAL(bash_cv_pgrp_pipe, ! [AC_TRY_RUN([ ! #ifdef HAVE_UNISTD_H ! # include ! #endif ! main() ! { ! # ifdef GETPGRP_VOID ! # define getpgID() getpgrp() ! # else ! # define getpgID() getpgrp(0) ! # define setpgid(x,y) setpgrp(x,y) ! # endif ! int pid1, pid2, fds[2]; ! int status; ! char ok; ! ! switch (pid1 = fork()) { ! case -1: ! exit(1); ! case 0: ! setpgid(0, getpid()); ! exit(0); ! } ! setpgid(pid1, pid1); ! ! sleep(2); /* let first child die */ ! ! if (pipe(fds) < 0) ! exit(2); ! ! switch (pid2 = fork()) { ! case -1: ! exit(3); ! case 0: ! setpgid(0, pid1); ! ok = getpgID() == pid1; ! write(fds[1], &ok, 1); ! exit(0); ! } ! setpgid(pid2, pid1); ! ! close(fds[1]); ! if (read(fds[0], &ok, 1) != 1) ! exit(4); ! wait(&status); ! wait(&status); ! exit(ok ? 0 : 5); ! } ! ], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, ! [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) ! bash_cv_pgrp_pipe=no]) ! ]) ! AC_MSG_RESULT($bash_cv_pgrp_pipe) ! if test $bash_cv_pgrp_pipe = yes; then ! AC_DEFINE(PGRP_PIPE) ! fi ! ]) ! ! AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS, [AC_REQUIRE([AC_TYPE_SIGNAL]) ! AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, *************** *** 819,836 **** ]) - AC_DEFUN(BASH_FUNC_SBRK_DECLARED, - [AC_MSG_CHECKING(for declaration of sbrk in ) - AC_CACHE_VAL(bash_cv_sbrk_declared, - [AC_EGREP_HEADER(sbrk, unistd.h, - bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) - AC_MSG_RESULT($bash_cv_sbrk_declared) - if test $bash_cv_sbrk_declared = yes; then - AC_DEFINE(SBRK_DECLARED) - fi - ]) - dnl check that some necessary job control definitions are present ! AC_DEFUN(BASH_JOB_CONTROL_MISSING, ! [AC_REQUIRE([BASH_SIGNAL_CHECK]) AC_MSG_CHECKING(for presence of necessary job control definitions) AC_CACHE_VAL(bash_cv_job_control_missing, --- 1264,1270 ---- ]) dnl check that some necessary job control definitions are present ! AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING, ! [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING(for presence of necessary job control definitions) AC_CACHE_VAL(bash_cv_job_control_missing, *************** *** 940,991 **** ]) ! AC_DEFUN(BASH_FUNC_POSIX_SETJMP, ! [AC_REQUIRE([BASH_SIGNAL_CHECK]) ! AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) ! AC_CACHE_VAL(bash_cv_func_sigsetjmp, ! [AC_TRY_RUN([ ! #ifdef HAVE_UNISTD_H ! #include ! #endif ! #include ! #include ! #include ! ! main() ! { ! #if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) ! exit (1); ! #else ! ! int code; ! sigset_t set, oset; ! sigjmp_buf xx; ! ! /* get the mask */ ! sigemptyset(&set); ! sigemptyset(&oset); ! sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); ! sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); ! ! /* save it */ ! code = sigsetjmp(xx, 1); ! if (code) ! exit(0); /* could get sigmask and compare to oset here. */ ! ! /* change it */ ! sigaddset(&set, SIGINT); ! sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); ! ! /* and siglongjmp */ ! siglongjmp(xx, 10); ! exit(1); ! #endif ! }], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, ! [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) ! bash_cv_func_sigsetjmp=missing] ! )]) ! AC_MSG_RESULT($bash_cv_func_sigsetjmp) ! if test $bash_cv_func_sigsetjmp = present; then ! AC_DEFINE(HAVE_POSIX_SIGSETJMP) fi ]) --- 1374,1403 ---- ]) ! AC_DEFUN(BASH_SYS_DEFAULT_MAIL_DIR, ! [AC_MSG_CHECKING(for default mail directory) ! AC_CACHE_VAL(bash_cv_mail_dir, ! [if test -d /var/mail; then ! bash_cv_mail_dir=/var/mail ! elif test -d /usr/mail; then ! bash_cv_mail_dir=/usr/mail ! elif test -d /var/spool/mail; then ! bash_cv_mail_dir=/var/spool/mail ! elif test -d /usr/spool/mail; then ! bash_cv_mail_dir=/usr/spool/mail ! else ! bash_cv_mail_dir=unknown ! fi ! ]) ! AC_MSG_RESULT($bash_cv_mail_dir) ! if test $bash_cv_mail_dir = "/var/mail"; then ! AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/mail") ! elif test $bash_cv_mail_dir = "/usr/mail"; then ! AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/mail") ! elif test $bash_cv_mail_dir = "/var/spool/mail"; then ! AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/spool/mail") ! elif test $bash_cv_mail_dir = "/usr/spool/mail"; then ! AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/spool/mail") ! else ! AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "unknown") fi ]) *************** *** 1003,1027 **** ]) - AC_DEFUN(BASH_STRUCT_WINSIZE, - [AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) - AC_CACHE_VAL(bash_cv_struct_winsize_header, - [AC_TRY_COMPILE([#include - #include ], [struct winsize x;], - bash_cv_struct_winsize_header=ioctl_h, - [AC_TRY_COMPILE([#include - #include ], [struct winsize x;], - bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) - ])]) - if test $bash_cv_struct_winsize_header = ioctl_h; then - AC_MSG_RESULT(sys/ioctl.h) - AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) - elif test $bash_cv_struct_winsize_header = termios_h; then - AC_MSG_RESULT(termios.h) - AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) - else - AC_MSG_RESULT(not found) - fi - ]) - AC_DEFUN(BASH_HAVE_TIOCSTAT, [AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) --- 1415,1418 ---- *************** *** 1054,1058 **** dnl versions) or (on others). dnl ! AC_DEFUN(BASH_MISC_SPEED_T, [AC_MSG_CHECKING(for speed_t in sys/types.h) AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, --- 1445,1449 ---- dnl versions) or (on others). dnl ! AC_DEFUN(BASH_CHECK_SPEED_T, [AC_MSG_CHECKING(for speed_t in sys/types.h) AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, *************** *** 1122,1233 **** dnl - dnl Check for the presence of getpeername in libsocket. - dnl If libsocket is present, check for libnsl and add it to LIBS if - dnl it's there, since most systems with libsocket require linking - dnl with libnsl as well. This should only be called if getpeername - dnl was not found in libc. - dnl - dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT - dnl AS WELL - dnl - AC_DEFUN(BASH_CHECK_SOCKLIB, - [ - if test "X$bash_cv_have_socklib" = "X"; then - _bash_needmsg= - else - AC_MSG_CHECKING(for socket library) - _bash_needmsg=yes - fi - AC_CACHE_VAL(bash_cv_have_socklib, - [AC_CHECK_LIB(socket, getpeername, - bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) - if test "X$_bash_needmsg" = Xyes; then - AC_MSG_RESULT($bash_cv_have_socklib) - _bash_needmsg= - fi - if test $bash_cv_have_socklib = yes; then - # check for libnsl, add it to LIBS if present - if test "X$bash_cv_have_libnsl" = "X"; then - _bash_needmsg= - else - AC_MSG_CHECKING(for libnsl) - _bash_needmsg=yes - fi - AC_CACHE_VAL(bash_cv_have_libnsl, - [AC_CHECK_LIB(nsl, t_open, - bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) - if test "X$_bash_needmsg" = Xyes; then - AC_MSG_RESULT($bash_cv_have_libnsl) - _bash_needmsg= - fi - if test $bash_cv_have_libnsl = yes; then - LIBS="-lsocket -lnsl $LIBS" - else - LIBS="-lsocket $LIBS" - fi - AC_DEFINE(HAVE_LIBSOCKET) - AC_DEFINE(HAVE_GETPEERNAME) - fi - ]) - - dnl - dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every - dnl system, we can't use AC_PREREQ - dnl - AC_DEFUN(BASH_FUNC_GETHOSTBYNAME, - [if test "X$bash_cv_have_gethostbyname" = "X"; then - _bash_needmsg=yes - else - AC_MSG_CHECKING(for gethostbyname in socket library) - _bash_needmsg= - fi - AC_CACHE_VAL(bash_cv_have_gethostbyname, - [AC_TRY_LINK([#include ], - [ struct hostent *hp; - hp = gethostbyname("localhost"); - ], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] - ) - if test "X$_bash_needmsg" = Xyes; then - AC_MSG_CHECKING(for gethostbyname in socket library) - fi - AC_MSG_RESULT($bash_cv_have_gethostbyname) - if test "$bash_cv_have_gethostbyname" = yes; then - AC_DEFINE(HAVE_GETHOSTBYNAME) - fi - ]) - - AC_DEFUN(BASH_DEFAULT_MAIL_DIR, - [AC_MSG_CHECKING(for default mail directory) - AC_CACHE_VAL(bash_cv_mail_dir, - [if test -d /var/mail; then - bash_cv_mail_dir=/var/mail - elif test -d /usr/mail; then - bash_cv_mail_dir=/usr/mail - elif test -d /var/spool/mail; then - bash_cv_mail_dir=/var/spool/mail - elif test -d /usr/spool/mail; then - bash_cv_mail_dir=/usr/spool/mail - else - bash_cv_mail_dir=unknown - fi - ]) - AC_MSG_RESULT($bash_cv_mail_dir) - if test $bash_cv_mail_dir = "/var/mail"; then - AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/mail") - elif test $bash_cv_mail_dir = "/usr/mail"; then - AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/mail") - elif test $bash_cv_mail_dir = "/var/spool/mail"; then - AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/spool/mail") - elif test $bash_cv_mail_dir = "/usr/spool/mail"; then - AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/spool/mail") - else - AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "unknown") - fi - ]) - - dnl dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions dnl ! AC_DEFUN(BASH_KERNEL_RLIMIT_CHECK, [AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) AC_CACHE_VAL(bash_cv_kernel_rlimit, --- 1513,1519 ---- dnl dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions dnl ! AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT, [AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) AC_CACHE_VAL(bash_cv_kernel_rlimit, *************** *** 1257,1399 **** ]) - AC_DEFUN(BASH_FUNC_STRCOLL, - [ - AC_MSG_CHECKING(whether or not strcoll and strcmp differ) - AC_CACHE_VAL(bash_cv_func_strcoll_broken, - [AC_TRY_RUN([ - #include - #if defined (HAVE_LOCALE_H) - #include - #endif - - main(c, v) - int c; - char *v[]; - { - int r1, r2; - char *deflocale, *defcoll; - - #ifdef HAVE_SETLOCALE - deflocale = setlocale(LC_ALL, ""); - defcoll = setlocale(LC_COLLATE, ""); - #endif - - #ifdef HAVE_STRCOLL - /* These two values are taken from tests/glob-test. */ - r1 = strcoll("abd", "aXd"); - #else - r1 = 0; - #endif - r2 = strcmp("abd", "aXd"); - - /* These two should both be greater than 0. It is permissible for - a system to return different values, as long as the sign is the - same. */ - - /* Exit with 1 (failure) if these two values are both > 0, since - this tests whether strcoll(3) is broken with respect to strcmp(3) - in the default locale. */ - exit (r1 > 0 && r2 > 0); - } - ], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, - [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) - bash_cv_func_strcoll_broken=no] - )]) - AC_MSG_RESULT($bash_cv_func_strcoll_broken) - if test $bash_cv_func_strcoll_broken = yes; then - AC_DEFINE(STRCOLL_BROKEN) - fi - ]) - - dnl - dnl If available, use support for large files unless the user specified - dnl one of the CPPFLAGS, LDFLAGS, or LIBS variables ( - dnl via GNU patch 2.5) - dnl - AC_DEFUN(BASH_LARGE_FILE_SUPPORT, - [AC_MSG_CHECKING(whether large file support needs explicit enabling) - ac_getconfs='' - ac_result=yes - ac_set='' - ac_shellvars='CPPFLAGS LDFLAGS LIBS' - for ac_shellvar in $ac_shellvars; do - case $ac_shellvar in - CPPFLAGS) ac_lfsvar=LFS_CFLAGS ac_lfs64var=LFS64_CFLAGS ;; - *) ac_lfsvar=LFS_$ac_shellvar ac_lfs64var=LFS64_$ac_shellvar ;; - esac - eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar - (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; } - ac_getconf=`getconf $ac_lfsvar` - ac_getconf64=`getconf $ac_lfs64var` - ac_getconfs=$ac_getconfs$ac_getconf\ $ac_getconf64 - eval ac_test_$ac_shellvar="\$ac_getconf\ \$ac_getconf64" - done - case "$ac_result$ac_getconfs" in - yes) ac_result=no ;; - esac - case "$ac_result$ac_set" in - yes?*) ac_result="yes, but $ac_set is already set, so use its settings" - esac - AC_MSG_RESULT($ac_result) - case $ac_result in - yes) - for ac_shellvar in $ac_shellvars; do - eval $ac_shellvar=\$ac_test_$ac_shellvar - done ;; - esac - ]) - - dnl - dnl AC_SYS_RESTARTABLE_SYSCALLS tests only for restarted system calls - dnl after a signal handler has been installed with signal(). Since - dnl Bash uses sigaction() if it is available, we need to check whether - dnl or not a signal handler installed with sigaction and SA_RESTART - dnl causes system calls to be restarted after the signal is caught - dnl - AC_DEFUN(BASH_SYS_RESTARTABLE_SYSCALLS, - [AC_REQUIRE([BASH_SIGNAL_CHECK]) - AC_CACHE_CHECK(whether posix sigaction restarts system calls by default, - bash_cv_sys_restartable_syscalls, - [AC_TRY_RUN( - [/* Exit 0 (true) if wait returns something other than -1, - i.e. the pid of the child, which means that wait was restarted - after getting the signal. */ - #ifdef HAVE_UNISTD_H - # include - #endif - #include - #include - static int caught = 0; - void ucatch (isig) int isig; { caught = 1; } - main () - { - #if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) - exit (1); - #else - struct sigaction act, oact; - int i, status; - - act.sa_handler = ucatch; - /* Might want to add SA_RESTART here, but bash's set_signal_handler - does not. */ - act.sa_flags = 0; - sigemptyset(&act.sa_mask); - sigemptyset(&oact.sa_mask); - i = fork (); - /* A possible race condition here, but in practice it never happens. */ - if (i == 0) { sleep (3); kill (getppid (), SIGINT); sleep (3); exit (0); } - sigaction(SIGINT, &act, &oact); - status = wait(&i); - if (status == -1) wait(&i); - exit (status == -1); - #endif - } - ], bash_cv_sys_restartable_syscalls=yes, bash_cv_sys_restartable_syscalls=no, - AC_MSG_WARN(cannot check restartable syscalls if cross compiling)) - ]) - if test $bash_cv_sys_restartable_syscalls = yes; then - AC_DEFINE(HAVE_RESTARTABLE_SYSCALLS) - fi - ]) dnl dnl Check for 64-bit off_t -- used for malloc alignment --- 1543,1546 ---- *************** *** 1416,1435 **** fi]) - AC_DEFUN(BASH_STRUCT_TIMEVAL, - [AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) - AC_CACHE_VAL(bash_cv_struct_timeval, - [ - AC_EGREP_HEADER(struct timeval, sys/time.h, - bash_cv_struct_timeval=yes, - AC_EGREP_HEADER(struct timeval, time.h, - bash_cv_struct_timeval=yes, - bash_cv_struct_timeval=no)) - ]) - AC_MSG_RESULT($bash_cv_struct_timeval) - if test $bash_cv_struct_timeval = yes; then - AC_DEFINE(HAVE_TIMEVAL) - fi - ]) - AC_DEFUN(BASH_CHECK_RTSIGS, [AC_MSG_CHECKING(for unusable real-time signals due to large values) --- 1563,1566 ---- *************** *** 1460,1463 **** --- 1591,1706 ---- if test $bash_cv_unusable_rtsigs = yes; then AC_DEFINE(UNUSABLE_RT_SIGNALS) + fi + ]) + + dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB + dnl require: + dnl AC_PROG_CC + dnl BASH_CHECK_LIB_TERMCAP + + AC_DEFUN(RL_LIB_READLINE_VERSION, + [ + AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) + + AC_MSG_CHECKING([version of installed readline library]) + + # What a pain in the ass this is. + + # save cpp and ld options + _save_CFLAGS="$CFLAGS" + _save_LDFLAGS="$LDFLAGS" + _save_LIBS="$LIBS" + + # Don't set ac_cv_rl_prefix if the caller has already assigned a value. This + # allows the caller to do something like $_rl_prefix=$withval if the user + # specifies --with-installed-readline=PREFIX as an argument to configure + + if test -z "$ac_cv_rl_prefix"; then + test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} + fi + + eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include + eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib + + LIBS="$LIBS -lreadline ${TERMCAP_LIB}" + CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" + LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" + + AC_TRY_RUN([ + #include + #include + + main() + { + FILE *fp; + fp = fopen("conftest.rlv", "w"); + if (fp == 0) exit(1); + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + fclose(fp); + exit(0); + } + ], + ac_cv_rl_version=`cat conftest.rlv`, + ac_cv_rl_version='0.0', + ac_cv_rl_version='4.2') + + CFLAGS="$_save_CFLAGS" + LDFLAGS="$_save_LDFLAGS" + LIBS="$_save_LIBS" + + RL_MAJOR=0 + RL_MINOR=0 + + # ( + case "$ac_cv_rl_version" in + 2*|3*|4*|5*|6*|7*|8*|9*) + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[a-zA-Z]*$::'` + ;; + esac + + # ((( + case $RL_MAJOR in + [[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; + [[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; + *) _RL_MAJOR=00 ;; + esac + + # ((( + case $RL_MINOR in + [[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; + [[0-9]]) _RL_MINOR=0$RL_MINOR ;; + *) _RL_MINOR=00 ;; + esac + + RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" + + # Readline versions greater than 4.2 have these defines in readline.h + + if test $ac_cv_rl_version = '0.0' ; then + AC_MSG_WARN([Could not test version of installed readline library.]) + elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then + # set these for use by the caller + RL_PREFIX=$ac_cv_rl_prefix + RL_LIBDIR=$ac_cv_rl_libdir + RL_INCLUDEDIR=$ac_cv_rl_includedir + AC_MSG_RESULT($ac_cv_rl_version) + else + + AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) + AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) + AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) + + AC_SUBST(RL_VERSION) + AC_SUBST(RL_MAJOR) + AC_SUBST(RL_MINOR) + + # set these for use by the caller + RL_PREFIX=$ac_cv_rl_prefix + RL_LIBDIR=$ac_cv_rl_libdir + RL_INCLUDEDIR=$ac_cv_rl_includedir + + AC_MSG_RESULT($ac_cv_rl_version) + fi ]) diff -Nrc2 bash-2.05/alias.c bash-2.05a/alias.c *** bash-2.05/alias.c Thu Aug 5 07:17:24 1999 --- bash-2.05a/alias.c Mon Oct 15 14:16:36 2001 *************** *** 32,35 **** --- 32,36 ---- #include + #include "chartypes.h" #include "bashansi.h" #include "command.h" *************** *** 42,46 **** #endif ! static int qsort_alias_compare (); /* Non-zero means expand all words on the line. Otherwise, expand --- 43,58 ---- #endif ! typedef int sh_alias_map_func_t __P((alias_t *)); ! ! static void free_alias_data __P((PTR_T)); ! static alias_t **map_over_aliases __P((sh_alias_map_func_t *)); ! static void sort_aliases __P((alias_t **)); ! static int qsort_alias_compare __P((alias_t **, alias_t **)); ! ! #if defined (READLINE) ! static int skipquotes __P((char *, int)); ! static int skipws __P((char *, int)); ! static int rd_token __P((char *, int)); ! #endif /* Non-zero means expand all words on the line. Otherwise, expand *************** *** 135,139 **** static void free_alias_data (data) ! char *data; { register alias_t *a; --- 147,151 ---- static void free_alias_data (data) ! PTR_T data; { register alias_t *a; *************** *** 190,194 **** static alias_t ** map_over_aliases (function) ! Function *function; { register int i; --- 202,206 ---- static alias_t ** map_over_aliases (function) ! sh_alias_map_func_t *function; { register int i; *************** *** 209,214 **** { if (list_index + 1 >= list_size) ! list = (alias_t **) ! xrealloc ((char *)list, (list_size += 20) * sizeof (alias_t *)); list[list_index++] = alias; --- 221,229 ---- { if (list_index + 1 >= list_size) ! { ! list_size += 20; ! list = (alias_t **)xrealloc (list, ! list_size * sizeof (alias_t *)); ! } list[list_index++] = alias; *************** *** 225,229 **** alias_t **array; { ! qsort (array, array_len ((char **)array), sizeof (alias_t *), qsort_alias_compare); } --- 240,244 ---- alias_t **array; { ! qsort (array, array_len ((char **)array), sizeof (alias_t *), (QSFUNC *)qsort_alias_compare); } *************** *** 249,253 **** return ((alias_t **)NULL); ! list = map_over_aliases ((Function *)NULL); if (list) sort_aliases (list); --- 264,268 ---- return ((alias_t **)NULL); ! list = map_over_aliases ((sh_alias_map_func_t *)NULL); if (list) sort_aliases (list); *************** *** 325,334 **** int start; { ! register int i = 0; ! int pass_next, backslash_quoted_word, peekc; /* skip quoted strings, in ' or ", and words in which a character is quoted with a `\'. */ ! backslash_quoted_word = pass_next = 0; /* Skip leading whitespace (or separator characters), and quoted words. --- 340,350 ---- int start; { ! register int i; ! int pass_next, backslash_quoted_word; ! unsigned char peekc; /* skip quoted strings, in ' or ", and words in which a character is quoted with a `\'. */ ! i = backslash_quoted_word = pass_next = 0; /* Skip leading whitespace (or separator characters), and quoted words. *************** *** 352,356 **** { peekc = string[i+1]; ! if (isletter (peekc)) backslash_quoted_word++; /* this is a backslash-quoted word */ else --- 368,372 ---- { peekc = string[i+1]; ! if (ISLETTER (peekc)) backslash_quoted_word++; /* this is a backslash-quoted word */ else *************** *** 373,377 **** peekc = string[i + 1]; ! if (isletter (peekc)) backslash_quoted_word++; continue; --- 389,393 ---- peekc = string[i + 1]; ! if (ISLETTER (peekc)) backslash_quoted_word++; continue; *************** *** 453,458 **** line_len = strlen (string) + 1; ! line = xmalloc (line_len); ! token = xmalloc (line_len); line[0] = i = 0; --- 469,474 ---- line_len = strlen (string) + 1; ! line = (char *)xmalloc (line_len); ! token = (char *)xmalloc (line_len); line[0] = i = 0; diff -Nrc2 bash-2.05/alias.h bash-2.05a/alias.h *** bash-2.05/alias.h Thu Aug 5 07:00:05 1999 --- bash-2.05a/alias.h Thu Aug 2 11:27:15 2001 *************** *** 22,28 **** #define _ALIAS_H_ ! #include "hashlib.h" ! extern char *xmalloc (); typedef struct alias { --- 22,28 ---- #define _ALIAS_H_ ! #include "stdc.h" ! #include "hashlib.h" typedef struct alias { *************** *** 39,70 **** extern HASH_TABLE *aliases; ! extern void initialize_aliases (); /* Scan the list of aliases looking for one with NAME. Return NULL if the alias doesn't exist, else a pointer to the alias. */ ! extern alias_t *find_alias (); /* Return the value of the alias for NAME, or NULL if there is none. */ ! extern char *get_alias_value (); /* Make a new alias from NAME and VALUE. If NAME can be found, then replace its value. */ ! extern void add_alias (); /* Remove the alias with name NAME from the alias list. Returns the index of the removed alias, or -1 if the alias didn't exist. */ ! extern int remove_alias (); /* Remove all aliases. */ ! extern void delete_all_aliases (); ! ! /* Return a new line, with any aliases expanded. */ ! extern char *alias_expand (); /* Return an array of all defined aliases. */ ! extern alias_t **all_aliases (); /* Expand a single word for aliases. */ ! extern char *alias_expand_word (); #endif /* _ALIAS_H_ */ --- 39,70 ---- extern HASH_TABLE *aliases; ! extern void initialize_aliases __P((void)); /* Scan the list of aliases looking for one with NAME. Return NULL if the alias doesn't exist, else a pointer to the alias. */ ! extern alias_t *find_alias __P((char *)); /* Return the value of the alias for NAME, or NULL if there is none. */ ! extern char *get_alias_value __P((char *)); /* Make a new alias from NAME and VALUE. If NAME can be found, then replace its value. */ ! extern void add_alias __P((char *, char *)); /* Remove the alias with name NAME from the alias list. Returns the index of the removed alias, or -1 if the alias didn't exist. */ ! extern int remove_alias __P((char *)); /* Remove all aliases. */ ! extern void delete_all_aliases __P((void)); /* Return an array of all defined aliases. */ ! extern alias_t **all_aliases __P((void)); /* Expand a single word for aliases. */ ! extern char *alias_expand_word __P((char *)); ! ! /* Return a new line, with any aliases expanded. */ ! extern char *alias_expand __P((char *)); #endif /* _ALIAS_H_ */ diff -Nrc2 bash-2.05/array.c bash-2.05a/array.c *** bash-2.05/array.c Fri Nov 3 11:20:00 2000 --- bash-2.05a/array.c Mon Oct 29 13:09:42 2001 *************** *** 46,51 **** #include "builtins/common.h" - extern char *quote_string (); /* XXX */ - #define ADD_BEFORE(ae, new) \ do { \ --- 46,49 ---- *************** *** 67,71 **** ARRAY_ELEMENT *r; ! r = (ARRAY_ELEMENT *) xmalloc(sizeof(ARRAY_ELEMENT)); r->ind = indx; r->value = value ? savestring(value) : (char *)NULL; --- 65,69 ---- ARRAY_ELEMENT *r; ! r = (ARRAY_ELEMENT *)xmalloc(sizeof(ARRAY_ELEMENT)); r->ind = indx; r->value = value ? savestring(value) : (char *)NULL; *************** *** 88,92 **** ARRAY_ELEMENT *head; ! r =(ARRAY *) xmalloc(sizeof(ARRAY)); r->type = array_indexed; r->max_index = r->max_size = -1; --- 86,90 ---- ARRAY_ELEMENT *head; ! r =(ARRAY *)xmalloc(sizeof(ARRAY)); r->type = array_indexed; r->max_index = r->max_size = -1; *************** *** 160,164 **** ARRAY *a; ARRAY_ELEMENT *p, *n; ! int i; a = new_array (); --- 158,162 ---- ARRAY *a; ARRAY_ELEMENT *p, *n; ! arrayind_t i; a = new_array (); *************** *** 281,285 **** array_walk(a, func) ARRAY *a; ! Function *func; { register ARRAY_ELEMENT *ae; --- 279,283 ---- array_walk(a, func) ARRAY *a; ! sh_ae_map_func_t *func; { register ARRAY_ELEMENT *ae; *************** *** 310,316 **** slen = strlen(sep); for (rsize = rlen = 0, ae = start; ae != end; ae = element_forw(ae)) { if (rsize == 0) ! result = xmalloc (rsize = 64); if (element_value(ae)) { t = quoted ? quote_string(element_value(ae)) : element_value(ae); --- 308,315 ---- slen = strlen(sep); + result = NULL; for (rsize = rlen = 0, ae = start; ae != end; ae = element_forw(ae)) { if (rsize == 0) ! result = (char *)xmalloc (rsize = 64); if (element_value(ae)) { t = quoted ? quote_string(element_value(ae)) : element_value(ae); *************** *** 331,335 **** } } ! result[rlen] = '\0'; /* XXX */ return(result); } --- 330,335 ---- } } ! if (result) ! result[rlen] = '\0'; /* XXX */ return(result); } *************** *** 359,363 **** return((char *)NULL); ! result = xmalloc (rsize = 128); result[0] = '('; rlen = 1; --- 359,363 ---- return((char *)NULL); ! result = (char *)xmalloc (rsize = 128); result[0] = '('; rlen = 1; *************** *** 526,533 **** array_subrange (a, start, end, quoted) ARRAY *a; ! int start, end, quoted; { ARRAY_ELEMENT *h, *p; ! int i; p = array_head (a); --- 526,534 ---- array_subrange (a, start, end, quoted) ARRAY *a; ! arrayind_t start, end; ! int quoted; { ARRAY_ELEMENT *h, *p; ! arrayind_t i; p = array_head (a); *************** *** 578,582 **** ARRAY_ELEMENT *ae; { ! printf("array[%d] = %s\n",(int)element_index(ae), element_value(ae)); } --- 579,583 ---- ARRAY_ELEMENT *ae; { ! printf("array[%ld] = %s\n", element_index(ae), element_value(ae)); } diff -Nrc2 bash-2.05/array.h bash-2.05a/array.h *** bash-2.05/array.h Thu Aug 5 07:01:14 1999 --- bash-2.05a/array.h Mon Sep 10 12:32:13 2001 *************** *** 25,29 **** #include "stdc.h" ! typedef int arrayind_t; enum atype {array_indexed, array_assoc}; --- 25,29 ---- #include "stdc.h" ! typedef long arrayind_t; enum atype {array_indexed, array_assoc}; *************** *** 41,44 **** --- 41,46 ---- } ARRAY_ELEMENT; + typedef int sh_ae_map_func_t __P((ARRAY_ELEMENT *)); + char *array_reference __P((ARRAY *, arrayind_t)); *************** *** 54,58 **** extern ARRAY *dup_array __P((ARRAY *)); extern ARRAY *dup_array_subrange __P((ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *)); - extern ARRAY_ELEMENT *new_array_element __P((arrayind_t, char *)); extern ARRAY_ELEMENT *copy_array_element __P((ARRAY_ELEMENT *)); --- 56,59 ---- *************** *** 68,72 **** extern ARRAY *string_to_array __P((char *, char *)); ! extern char *array_subrange __P((ARRAY *, int, int, int)); extern char *array_pat_subst __P((ARRAY *, char *, char *, int)); --- 69,73 ---- extern ARRAY *string_to_array __P((char *, char *)); ! extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int)); extern char *array_pat_subst __P((ARRAY *, char *, char *, int)); diff -Nrc2 bash-2.05/arrayfunc.c bash-2.05a/arrayfunc.c *** bash-2.05/arrayfunc.c Wed Dec 31 19:00:00 1969 --- bash-2.05a/arrayfunc.c Thu Sep 13 16:31:58 2001 *************** *** 0 **** --- 1,645 ---- + /* arrayfunc.c -- High-level array functions used by other parts of the shell. */ + + /* Copyright (C) 2001 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + + #include "config.h" + + #if defined (ARRAY_VARS) + + #if defined (HAVE_UNISTD_H) + # include + #endif + #include + + #include "shell.h" + #include "builtins/common.h" + + extern char *this_command_name; + extern int last_command_exit_value; + + static void quote_array_assignment_chars __P((WORD_LIST *)); + static char *array_value_internal __P((char *, int, int)); + + /* **************************************************************** */ + /* */ + /* Functions to manipulate array variables and perform assignments */ + /* */ + /* **************************************************************** */ + + /* Convert a shell variable to an array variable. The original value is + saved as array[0]. */ + SHELL_VAR * + convert_var_to_array (var) + SHELL_VAR *var; + { + char *oldval; + ARRAY *array; + + oldval = value_cell (var); + array = new_array (); + array_add_element (array, 0, oldval); + + FREE (value_cell (var)); + var->value = (char *)array; + + INVALIDATE_EXPORTSTR (var); + + VSETATTR (var, att_array); + VUNSETATTR (var, att_invisible); + + return var; + } + + /* Perform an array assignment name[ind]=value. If NAME already exists and + is not an array, and IND is 0, perform name=value instead. If NAME exists + and is not an array, and IND is not 0, convert it into an array with the + existing value as name[0]. + + If NAME does not exist, just create an array variable, no matter what + IND's value may be. */ + SHELL_VAR * + bind_array_variable (name, ind, value) + char *name; + arrayind_t ind; + char *value; + { + SHELL_VAR *entry; + char *newval; + + entry = var_lookup (name, shell_variables); + + if (entry == (SHELL_VAR *) 0) + entry = make_new_array_variable (name); + else if (readonly_p (entry) || noassign_p (entry)) + { + if (readonly_p (entry)) + report_error ("%s: readonly variable", name); + return (entry); + } + else if (array_p (entry) == 0) + entry = convert_var_to_array (entry); + + /* ENTRY is an array variable, and ARRAY points to the value. */ + newval = make_variable_value (entry, value); + if (entry->assign_func) + (*entry->assign_func) (entry, ind, newval); + else + array_add_element (array_cell (entry), ind, newval); + FREE (newval); + + return (entry); + } + + /* Parse NAME, a lhs of an assignment statement of the form v[s], and + assign VALUE to that array element by calling bind_array_variable(). */ + SHELL_VAR * + assign_array_element (name, value) + char *name, *value; + { + char *sub, *vname; + arrayind_t ind; + int sublen; + SHELL_VAR *entry; + + vname = array_variable_name (name, &sub, &sublen); + + if (vname == 0) + return ((SHELL_VAR *)NULL); + + if ((ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']') || (sublen <= 1)) + { + free (vname); + report_error ("%s: bad array subscript", name); + return ((SHELL_VAR *)NULL); + } + + ind = array_expand_index (sub, sublen); + if (ind < 0) + { + free (vname); + report_error ("%s: bad array subscript", name); + return ((SHELL_VAR *)NULL); + } + + entry = bind_array_variable (vname, ind, value); + + free (vname); + return (entry); + } + + /* Find the array variable corresponding to NAME. If there is no variable, + create a new array variable. If the variable exists but is not an array, + convert it to an indexed array. If CHECK_FLAGS is non-zero, an existing + variable is checked for the readonly or noassign attribute in preparation + for assignment (e.g., by the `read' builtin). */ + SHELL_VAR * + find_or_make_array_variable (name, check_flags) + char *name; + int check_flags; + { + SHELL_VAR *var; + + var = find_variable (name); + + if (var == 0) + var = make_new_array_variable (name); + else if (check_flags && (readonly_p (var) || noassign_p (var))) + { + if (readonly_p (var)) + report_error ("%s: readonly variable", name); + return ((SHELL_VAR *)NULL); + } + else if (array_p (var) == 0) + var = convert_var_to_array (var); + + return (var); + } + + /* Perform a compound assignment statement for array NAME, where VALUE is + the text between the parens: NAME=( VALUE ) */ + SHELL_VAR * + assign_array_from_string (name, value) + char *name, *value; + { + SHELL_VAR *var; + + var = find_or_make_array_variable (name, 1); + if (var == 0) + return ((SHELL_VAR *)NULL); + + return (assign_array_var_from_string (var, value)); + } + + /* Sequentially assign the indices of indexed array variable VAR from the + words in LIST. */ + SHELL_VAR * + assign_array_var_from_word_list (var, list) + SHELL_VAR *var; + WORD_LIST *list; + { + register arrayind_t i; + register WORD_LIST *l; + ARRAY *a; + + for (a = array_cell (var), l = list, i = 0; l; l = l->next, i++) + if (var->assign_func) + (*var->assign_func) (var, i, l->word->word); + else + array_add_element (a, i, l->word->word); + return var; + } + + /* Perform a compound array assignment: VAR->name=( VALUE ). The + VALUE has already had the parentheses stripped. */ + SHELL_VAR * + assign_array_var_from_string (var, value) + SHELL_VAR *var; + char *value; + { + ARRAY *a; + WORD_LIST *list, *nlist; + char *w, *val, *nval; + int ni, len; + arrayind_t ind, last_ind; + + if (value == 0) + return var; + + /* If this is called from declare_builtin, value[0] == '(' and + strchr(value, ')') != 0. In this case, we need to extract + the value from between the parens before going on. */ + if (*value == '(') /*)*/ + { + ni = 1; + val = extract_array_assignment_list (value, &ni); + if (val == 0) + return var; + } + else + val = value; + + /* Expand the value string into a list of words, performing all the + shell expansions including pathname generation and word splitting. */ + /* First we split the string on whitespace, using the shell parser + (ksh93 seems to do this). */ + list = parse_string_to_word_list (val, "array assign"); + + /* If we're using [subscript]=value, we need to quote each [ and ] to + prevent unwanted filename expansion. */ + if (list) + quote_array_assignment_chars (list); + + /* Now that we've split it, perform the shell expansions on each + word in the list. */ + nlist = list ? expand_words_no_vars (list) : (WORD_LIST *)NULL; + + dispose_words (list); + + if (val != value) + free (val); + + a = array_cell (var); + + /* Now that we are ready to assign values to the array, kill the existing + value. */ + if (a) + empty_array (a); + + for (last_ind = 0, list = nlist; list; list = list->next) + { + w = list->word->word; + + /* We have a word of the form [ind]=value */ + if (w[0] == '[') + { + len = skipsubscript (w, 0); + + if (w[len] != ']' || w[len+1] != '=') + { + nval = make_variable_value (var, w); + if (var->assign_func) + (*var->assign_func) (var, last_ind, nval); + else + array_add_element (a, last_ind, nval); + FREE (nval); + last_ind++; + continue; + } + + if (len == 1) + { + report_error ("%s: bad array subscript", w); + continue; + } + + if (ALL_ELEMENT_SUB (w[1]) && len == 2) + { + report_error ("%s: cannot assign to non-numeric index", w); + continue; + } + + ind = array_expand_index (w + 1, len); + if (ind < 0) + { + report_error ("%s: bad array subscript", w); + continue; + } + last_ind = ind; + val = w + len + 2; + } + else /* No [ind]=value, just a stray `=' */ + { + ind = last_ind; + val = w; + } + + if (integer_p (var)) + this_command_name = (char *)NULL; /* no command name for errors */ + nval = make_variable_value (var, val); + if (var->assign_func) + (*var->assign_func) (var, ind, nval); + else + array_add_element (a, ind, nval); + FREE (nval); + last_ind++; + } + + dispose_words (nlist); + return (var); + } + + /* For each word in a compound array assignment, if the word looks like + [ind]=value, quote the `[' and `]' before the `=' to protect them from + unwanted filename expansion. */ + static void + quote_array_assignment_chars (list) + WORD_LIST *list; + { + char *s, *t, *nword; + int saw_eq; + WORD_LIST *l; + + for (l = list; l; l = l->next) + { + if (l->word == 0 || l->word->word == 0 || l->word->word[0] == '\0') + continue; /* should not happen, but just in case... */ + /* Don't bother if it doesn't look like [ind]=value */ + if (l->word->word[0] != '[' || strchr (l->word->word, '=') == 0) /* ] */ + continue; + s = nword = (char *)xmalloc (strlen (l->word->word) * 2 + 1); + saw_eq = 0; + for (t = l->word->word; *t; ) + { + if (*t == '=') + saw_eq = 1; + if (saw_eq == 0 && (*t == '[' || *t == ']')) + *s++ = '\\'; + *s++ = *t++; + } + *s = '\0'; + free (l->word->word); + l->word->word = nword; + } + } + + /* This function assumes s[i] == '['; returns with s[ret] == ']' if + an array subscript is correctly parsed. */ + int + skipsubscript (s, i) + const char *s; + int i; + { + int count, c; + + for (count = 1; count && (c = s[++i]); ) + { + if (c == '[') + count++; + else if (c == ']') + count--; + } + return i; + } + + /* This function is called with SUB pointing to just after the beginning + `[' of an array subscript and removes the array element to which SUB + expands from array VAR. A subscript of `*' or `@' unsets the array. */ + int + unbind_array_element (var, sub) + SHELL_VAR *var; + char *sub; + { + int len; + arrayind_t ind; + ARRAY_ELEMENT *ae; + + len = skipsubscript (sub, 0); + if (sub[len] != ']' || len == 0) + { + builtin_error ("%s[%s: bad array subscript", var->name, sub); + return -1; + } + sub[len] = '\0'; + + if (ALL_ELEMENT_SUB (sub[0]) && sub[1] == 0) + { + makunbound (var->name, shell_variables); + return (0); + } + ind = array_expand_index (sub, len+1); + if (ind < 0) + { + builtin_error ("[%s]: bad array subscript", sub); + return -1; + } + ae = array_delete_element (array_cell (var), ind); + if (ae) + destroy_array_element (ae); + return 0; + } + + /* Format and output an array assignment in compound form VAR=(VALUES), + suitable for re-use as input. */ + void + print_array_assignment (var, quoted) + SHELL_VAR *var; + int quoted; + { + char *vstr; + + if (quoted) + vstr = quoted_array_assignment_string (array_cell (var)); + else + vstr = array_to_assignment_string (array_cell (var)); + + if (vstr == 0) + printf ("%s=%s\n", var->name, quoted ? "'()'" : "()"); + else + { + printf ("%s=%s\n", var->name, vstr); + free (vstr); + } + } + + /***********************************************************************/ + /* */ + /* Utility functions to manage arrays and their contents for expansion */ + /* */ + /***********************************************************************/ + + /* Return 1 if NAME is a properly-formed array reference v[sub]. */ + int + valid_array_reference (name) + char *name; + { + char *t; + int r, len; + + t = strchr (name, '['); /* ] */ + if (t) + { + *t = '\0'; + r = legal_identifier (name); + *t = '['; + if (r == 0) + return 0; + /* Check for a properly-terminated non-blank subscript. */ + len = skipsubscript (t, 0); + if (t[len] != ']' || len == 1) + return 0; + for (r = 1; r < len; r++) + if (whitespace (t[r]) == 0) + return 1; + return 0; + } + return 0; + } + + /* Expand the array index beginning at S and extending LEN characters. */ + arrayind_t + array_expand_index (s, len) + char *s; + int len; + { + char *exp, *t; + int expok; + arrayind_t val; + + exp = (char *)xmalloc (len); + strncpy (exp, s, len - 1); + exp[len - 1] = '\0'; + t = expand_string_to_string (exp, 0); + this_command_name = (char *)NULL; + val = evalexp (t, &expok); + free (t); + free (exp); + if (expok == 0) + { + last_command_exit_value = EXECUTION_FAILURE; + jump_to_top_level (DISCARD); + } + return val; + } + + /* Return the name of the variable specified by S without any subscript. + If SUBP is non-null, return a pointer to the start of the subscript + in *SUBP. If LENP is non-null, the length of the subscript is returned + in *LENP. This returns newly-allocated memory. */ + char * + array_variable_name (s, subp, lenp) + char *s, **subp; + int *lenp; + { + char *t, *ret; + int ind, ni; + + t = strchr (s, '['); + if (t == 0) + return ((char *)NULL); + ind = t - s; + ni = skipsubscript (s, ind); + if (ni <= ind + 1 || s[ni] != ']') + { + report_error ("%s: bad array subscript", s); + return ((char *)NULL); + } + + *t = '\0'; + ret = savestring (s); + *t++ = '['; /* ] */ + + if (subp) + *subp = t; + if (lenp) + *lenp = ni - ind; + + return ret; + } + + /* Return the variable specified by S without any subscript. If SUBP is + non-null, return a pointer to the start of the subscript in *SUBP. + If LENP is non-null, the length of the subscript is returned in *LENP. */ + SHELL_VAR * + array_variable_part (s, subp, lenp) + char *s, **subp; + int *lenp; + { + char *t; + SHELL_VAR *var; + + t = array_variable_name (s, subp, lenp); + if (t == 0) + return ((SHELL_VAR *)NULL); + var = find_variable (t); + + free (t); + return var; + } + + /* Return a string containing the elements in the array and subscript + described by S. If the subscript is * or @, obeys quoting rules akin + to the expansion of $* and $@ including double quoting. */ + static char * + array_value_internal (s, quoted, allow_all) + char *s; + int quoted, allow_all; + { + int len; + arrayind_t ind; + char *retval, *t, *temp; + WORD_LIST *l; + SHELL_VAR *var; + + var = array_variable_part (s, &t, &len); + + if (var == 0) + return (char *)NULL; + + /* [ */ + if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') + { + if (allow_all == 0) + { + report_error ("%s: bad array subscript", s); + return ((char *)NULL); + } + else if (array_p (var) == 0) + { + l = (WORD_LIST *)NULL; + l = add_string_to_list (value_cell (var), l); + } + else + { + l = array_to_word_list (array_cell (var)); + if (l == (WORD_LIST *)NULL) + return ((char *) NULL); + } + + if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + { + temp = string_list_dollar_star (l); + retval = quote_string (temp); + free (temp); + } + else /* ${name[@]} or unquoted ${name[*]} */ + retval = string_list_dollar_at (l, quoted); + + dispose_words (l); + } + else + { + ind = array_expand_index (t, len); + if (ind < 0) + { + report_error ("%s: bad array subscript", var->name); + return ((char *)NULL); + } + if (array_p (var) == 0) + return (ind == 0 ? savestring (value_cell (var)) : (char *)NULL); + retval = array_reference (array_cell (var), ind); + if (retval) + retval = quote_escapes (retval); + } + + return retval; + } + + /* Return a string containing the elements described by the array and + subscript contained in S, obeying quoting for subscripts * and @. */ + char * + array_value (s, quoted) + char *s; + int quoted; + { + return (array_value_internal (s, quoted, 1)); + } + + /* Return the value of the array indexing expression S as a single string. + If ALLOW_ALL is 0, do not allow `@' and `*' subscripts. This is used + by other parts of the shell such as the arithmetic expression evaluator + in expr.c. */ + char * + get_array_value (s, allow_all) + char *s; + int allow_all; + { + return (array_value_internal (s, 0, allow_all)); + } + + #endif /* ARRAY_VARS */ diff -Nrc2 bash-2.05/arrayfunc.h bash-2.05a/arrayfunc.h *** bash-2.05/arrayfunc.h Wed Dec 31 19:00:00 1969 --- bash-2.05a/arrayfunc.h Thu Sep 13 16:32:06 2001 *************** *** 0 **** --- 1,53 ---- + /* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */ + + /* Copyright (C) 2001 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + + #if !defined (_ARRAYFUNC_H_) + #define _ARRAYFUNC_H_ + + /* Must include variables.h before including this file. */ + + #if defined (ARRAY_VARS) + + extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *)); + + extern SHELL_VAR *bind_array_variable __P((char *, arrayind_t, char *)); + extern SHELL_VAR *assign_array_element __P((char *, char *)); + + extern SHELL_VAR *find_or_make_array_variable __P((char *, int)); + + extern SHELL_VAR *assign_array_from_string __P((char *, char *)); + extern SHELL_VAR *assign_array_var_from_word_list __P((SHELL_VAR *, WORD_LIST *)); + extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *)); + + extern int unbind_array_element __P((SHELL_VAR *, char *)); + extern int skipsubscript __P((const char *, int)); + extern void print_array_assignment __P((SHELL_VAR *, int)); + + extern arrayind_t array_expand_index __P((char *, int)); + extern int valid_array_reference __P((char *)); + extern char *array_value __P((char *, int)); + extern char *get_array_value __P((char *, int)); + + extern char *array_variable_name __P((char *, char **, int *)); + extern SHELL_VAR *array_variable_part __P((char *, char **, int *)); + + #endif + + #endif /* !_ARRAYFUNC_H_ */ diff -Nrc2 bash-2.05/bashansi.h bash-2.05a/bashansi.h *** bash-2.05/bashansi.h Thu Aug 5 07:01:23 1999 --- bash-2.05a/bashansi.h Mon Oct 15 09:29:48 2001 *************** *** 23,30 **** #if defined (HAVE_STRING_H) # include - #else - # include #endif /* !HAVE_STRING_H */ #if defined (HAVE_STDLIB_H) --- 23,35 ---- #if defined (HAVE_STRING_H) + # if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H) + # include + # endif # include #endif /* !HAVE_STRING_H */ + + #if defined (HAVE_STRINGS_H) + # include + #endif /* !HAVE_STRINGS_H */ #if defined (HAVE_STDLIB_H) diff -Nrc2 bash-2.05/bashhist.c bash-2.05a/bashhist.c *** bash-2.05/bashhist.c Tue Mar 13 14:54:46 2001 --- bash-2.05a/bashhist.c Mon Sep 10 15:18:59 2001 *************** *** 42,49 **** #include "parser.h" /* for the struct dstack stuff. */ #include "pathexp.h" /* for the struct ignorevar stuff */ #include "builtins/common.h" #include ! #include #if defined (READLINE) --- 42,51 ---- #include "parser.h" /* for the struct dstack stuff. */ #include "pathexp.h" /* for the struct ignorevar stuff */ + #include "bashhist.h" /* matching prototypes and declarations */ #include "builtins/common.h" #include ! #include ! #include #if defined (READLINE) *************** *** 55,61 **** #endif ! extern int glob_pattern_p (); ! ! static int histignore_item_func (); static struct ignorevar histignore = --- 57,61 ---- #endif ! static int histignore_item_func __P((struct ign *)); static struct ignorevar histignore = *************** *** 65,69 **** 0, (char *)0, ! (Function *)histignore_item_func, }; --- 65,69 ---- 0, (char *)0, ! (sh_iv_item_func_t *)histignore_item_func, }; *************** *** 149,164 **** #endif /* READLINE */ /* Variables declared in other files used here. */ - extern int interactive; extern int current_command_line_count; extern struct dstack dstack; ! extern char *extract_colon_unit (); ! extern char *history_delimiting_chars (); ! extern void maybe_add_history (); /* forward declaration */ ! extern void bash_add_history (); /* forward declaration */ ! ! static int history_should_ignore (); /* Is the history expansion starting at string[i] one that should not --- 149,170 ---- #endif /* READLINE */ + /* Non-zero means to not save function definitions in the history list. */ + int dont_save_function_defs; + /* Variables declared in other files used here. */ extern int current_command_line_count; extern struct dstack dstack; ! static int bash_history_inhibit_expansion __P((char *, int)); ! #if defined (READLINE) ! static void re_edit __P((char *)); ! #endif ! static int history_expansion_p __P((char *)); ! static int shell_comment __P((char *)); ! static int should_expand __P((char *)); ! static HIST_ENTRY *last_history_entry __P((void)); ! static char *expand_histignore_pattern __P((char *)); ! static int history_should_ignore __P((char *)); /* Is the history expansion starting at string[i] one that should not *************** *** 471,474 **** --- 477,481 ---- } + #ifdef INCLUDE_UNUSED /* Remove shell comments from LINE. A `#' and anything after it is a comment. This isn't really useful yet, since it doesn't handle quoting. */ *************** *** 485,488 **** --- 492,496 ---- return (line); } + #endif /* Add LINE to the history list depending on the value of HISTORY_CONTROL. */ *************** *** 581,588 **** } ! new_line = (char *) xmalloc (1 ! + curlen ! + strlen (line) ! + strlen (chars_to_add)); sprintf (new_line, "%s%s%s", current->line, chars_to_add, line); offset = where_history (); --- 589,596 ---- } ! new_line = (char *)xmalloc (1 ! + curlen ! + strlen (line) ! + strlen (chars_to_add)); sprintf (new_line, "%s%s%s", current->line, chars_to_add, line); offset = where_history (); *************** *** 705,709 **** npat = histignore.ignores[i].val; ! match = fnmatch (npat, line, FNMATCH_EXTFLAG) != FNM_NOMATCH; if (histignore.ignores[i].flags & HIGN_EXPAND) --- 713,717 ---- npat = histignore.ignores[i].val; ! match = strmatch (npat, line, FNMATCH_EXTFLAG) != FNM_NOMATCH; if (histignore.ignores[i].flags & HIGN_EXPAND) diff -Nrc2 bash-2.05/bashhist.h bash-2.05a/bashhist.h *** bash-2.05/bashhist.h Thu Aug 5 07:01:46 1999 --- bash-2.05a/bashhist.h Tue Aug 28 08:05:57 2001 *************** *** 22,25 **** --- 22,27 ---- #define _BASHHIST_H_ + #include "stdc.h" + extern int remember_on_history; extern int history_lines_this_session; *************** *** 34,53 **** # endif /* BANG_HISTORY */ ! extern void bash_initialize_history (); ! extern void bash_history_reinit (); ! extern void bash_history_disable (); ! extern void bash_history_enable (); ! extern void load_history (); ! extern void save_history (); ! extern int maybe_append_history (); ! extern int maybe_save_shell_history (); ! extern char *pre_process_line (); ! extern int history_number (); ! extern void maybe_add_history (); ! extern void bash_add_history (); ! extern void setup_history_ignore (); ! extern char *last_history_line (); #endif /* _BASHHIST_H_ */ --- 36,55 ---- # endif /* BANG_HISTORY */ ! extern void bash_initialize_history __P((void)); ! extern void bash_history_reinit __P((int)); ! extern void bash_history_disable __P((void)); ! extern void bash_history_enable __P((void)); ! extern void load_history __P((void)); ! extern void save_history __P((void)); ! extern int maybe_append_history __P((char *)); ! extern int maybe_save_shell_history __P((void)); ! extern char *pre_process_line __P((char *, int, int)); ! extern void maybe_add_history __P((char *)); ! extern void bash_add_history __P((char *)); ! extern int history_number __P((void)); ! extern void setup_history_ignore __P((char *)); ! extern char *last_history_line __P((void)); #endif /* _BASHHIST_H_ */ diff -Nrc2 bash-2.05/bashline.c bash-2.05a/bashline.c *** bash-2.05/bashline.c Tue Mar 6 13:36:07 2001 --- bash-2.05a/bashline.c Mon Nov 5 12:58:59 2001 *************** *** 30,34 **** --- 30,39 ---- #endif + #if defined (HAVE_GRP_H) + # include + #endif + #include + #include "chartypes.h" #include "bashansi.h" #include "shell.h" *************** *** 60,65 **** /* Forward declarations */ - extern char *command_word_completion_function __P((const char *, int)); - /* Functions bound to keys in Readline for Bash users. */ static int shell_expand_line __P((int, int)); --- 65,68 ---- *************** *** 70,77 **** static int bash_ignore_everything __P((char **)); - static void cleanup_expansion_error __P((void)); - static void set_up_new_line __P((char *)); - #if defined (BANG_HISTORY) static int history_expand_line __P((int, int)); static int tcsh_magic_space __P((int, int)); --- 73,78 ---- static int bash_ignore_everything __P((char **)); #if defined (BANG_HISTORY) + static char *history_expand_line_internal __P((char *)); static int history_expand_line __P((int, int)); static int tcsh_magic_space __P((int, int)); *************** *** 85,92 **** /* Helper functions for Readline. */ ! static int bash_directory_completion_hook (); ! static int filename_completion_ignore (); static int bash_push_line __P((void)); static char **attempt_shell_completion __P((const char *, int, int)); static char *variable_completion_function __P((const char *, int)); --- 86,98 ---- /* Helper functions for Readline. */ ! static int bash_directory_completion_hook __P((char **)); ! static int filename_completion_ignore __P((char **)); static int bash_push_line __P((void)); + static void cleanup_expansion_error __P((void)); + static void maybe_make_readline_line __P((char *)); + static void set_up_new_line __P((char *)); + + static int check_redir __P((int)); static char **attempt_shell_completion __P((const char *, int, int)); static char *variable_completion_function __P((const char *, int)); *************** *** 94,109 **** static char *command_subst_completion_function __P((const char *, int)); static int dynamic_complete_history __P((int, int)); ! static char *glob_complete_word __P((const char *, int)); ! static int bash_glob_expand_word __P((int, int)); ! static int bash_glob_list_expansions __P((int, int)); ! ! static void snarf_hosts_from_file __P((char *)); static void add_host_name __P((char *)); static char *bash_dequote_filename __P((char *, int)); static char *bash_quote_filename __P((char *, int, char *)); #if defined (ALIAS) static int posix_edit_macros __P((int, int)); --- 100,127 ---- static char *command_subst_completion_function __P((const char *, int)); + static void build_history_completion_array __P((void)); + static char *history_completion_generator __P((const char *, int)); static int dynamic_complete_history __P((int, int)); ! static void initialize_hostname_list __P((void)); static void add_host_name __P((char *)); + static void snarf_hosts_from_file __P((char *)); + static char **hostnames_matching __P((char *)); + + static void _ignore_completion_names __P((char **, sh_ignore_func_t *)); + static int name_is_acceptable __P((const char *)); + static int test_for_directory __P((const char *)); + static int return_zero __P((const char *)); static char *bash_dequote_filename __P((char *, int)); + static char *quote_word_break_chars __P((char *)); static char *bash_quote_filename __P((char *, int, char *)); + static int bash_execute_unix_command __P((int, int)); + static void init_unix_command_map __P((void)); + static int isolate_sequence __P((char *, int, int, int *)); + + static int set_saved_history __P((void)); + #if defined (ALIAS) static int posix_edit_macros __P((int, int)); *************** *** 111,119 **** #if defined (PROGRAMMABLE_COMPLETION) static char **prog_complete_matches; - static int old_rl_completion_append_character; #endif /* Variables used here but defined in other files. */ extern int posixly_correct, no_symbolic_links; extern char *current_prompt_string, *ps1_prompt; --- 129,142 ---- #if defined (PROGRAMMABLE_COMPLETION) + static int find_cmd_start __P((int)); + static int find_cmd_end __P((int)); + static char *find_cmd_name __P((int)); + static char *prog_complete_return __P((const char *, int)); + static char **prog_complete_matches; #endif /* Variables used here but defined in other files. */ + extern int current_command_line_count; extern int posixly_correct, no_symbolic_links; extern char *current_prompt_string, *ps1_prompt; *************** *** 145,148 **** --- 168,176 ---- static int bash_complete_command __P((int, int)); static int bash_possible_command_completions __P((int, int)); + + static char *glob_complete_word __P((const char *, int)); + static int bash_glob_completion_internal __P((int)); + static int bash_glob_expand_word __P((int, int)); + static int bash_glob_list_expansions __P((int, int)); #endif /* SPECIFIC_COMPLETION_FUNCTIONS */ *************** *** 190,197 **** } ! void enable_hostname_completion (on_or_off) int on_or_off; { if (on_or_off) { --- 218,229 ---- } ! int enable_hostname_completion (on_or_off) int on_or_off; { + int old_value; + + old_value = perform_hostname_completion; + if (on_or_off) { *************** *** 206,209 **** --- 238,243 ---- rl_completer_word_break_characters = bash_nohostname_word_break_characters; } + + return (old_value); } *************** *** 458,462 **** char *name; { ! long size; if (hostname_list_length + 2 > hostname_list_size) --- 492,496 ---- char *name; { ! size_t size; if (hostname_list_length + 2 > hostname_list_size) *************** *** 515,519 **** /* Skip internet address if present. */ ! if (digit (buffer[i])) for (; buffer[i] && cr_whitespace (buffer[i]) == 0; i++); --- 549,553 ---- /* Skip internet address if present. */ ! if (DIGIT (buffer[i])) for (; buffer[i] && cr_whitespace (buffer[i]) == 0; i++); *************** *** 620,623 **** --- 654,658 ---- saved_history_line_to_use = -1; rl_startup_hook = old_rl_startup_hook; + return (0); } *************** *** 658,662 **** { char *command; ! int r; /* Accept the current line. */ --- 693,700 ---- { char *command; ! int r, cclc, rrs; ! ! rrs = rl_readline_state; ! cclc = current_command_line_count; /* Accept the current line. */ *************** *** 665,669 **** if (rl_explicit_arg) { ! command = xmalloc (strlen (VI_EDIT_COMMAND) + 8); sprintf (command, "%s %d", VI_EDIT_COMMAND, count); } --- 703,707 ---- if (rl_explicit_arg) { ! command = (char *)xmalloc (strlen (VI_EDIT_COMMAND) + 8); sprintf (command, "%s %d", VI_EDIT_COMMAND, count); } *************** *** 682,686 **** --- 720,735 ---- } r = parse_and_execute (command, "v", SEVAL_NOHIST); + + current_command_line_count = cclc; + + /* Now erase the contents of the current line and undo the effects of the + rl_accept_line() above. We don't even want to make the text we just + executed available for undoing. */ rl_line_buffer[0] = '\0'; /* XXX */ + rl_point = rl_end = 0; + rl_done = 0; + rl_readline_state = rrs; + + rl_forced_update_display (); return r; *************** *** 740,743 **** --- 789,797 ---- #if defined (PROGRAMMABLE_COMPLETION) + /* + * XXX - because of the <= start test, and setting os = s+1, this can + * potentially return os > start. This is probably not what we want to + * happen, but fix later after 2.05a-release. + */ static int find_cmd_start (start) *************** *** 783,787 **** static char * prog_complete_return (text, matchnum) ! char *text; int matchnum; { --- 837,841 ---- static char * prog_complete_return (text, matchnum) ! const char *text; int matchnum; { *************** *** 887,891 **** e = find_cmd_end (end); n = find_cmd_name (s); ! prog_complete_matches = programmable_completions (n, text, s, e, &foundcs); FREE (n); /* XXX - if we found a COMPSPEC for the command, just return whatever --- 941,948 ---- e = find_cmd_end (end); n = find_cmd_name (s); ! if (e > s) ! prog_complete_matches = programmable_completions (n, text, s, e, &foundcs); ! else ! foundcs = 0; FREE (n); /* XXX - if we found a COMPSPEC for the command, just return whatever *************** *** 896,900 **** { /* If the user specified that the compspec returns filenames, make ! sure that readline knows it. if (foundcs & COPT_FILENAMES) rl_filename_completion_desired = 1; --- 953,957 ---- { /* If the user specified that the compspec returns filenames, make ! sure that readline knows it. */ if (foundcs & COPT_FILENAMES) rl_filename_completion_desired = 1; *************** *** 954,958 **** /* This could be a globbing pattern, so try to expand it using pathname expansion. */ ! if (!matches && glob_pattern_p ((char *)text)) /* XXX fix const later */ { matches = rl_completion_matches (text, glob_complete_word); --- 1011,1015 ---- /* This could be a globbing pattern, so try to expand it using pathname expansion. */ ! if (!matches && glob_pattern_p (text)) { matches = rl_completion_matches (text, glob_complete_word); *************** *** 1003,1012 **** whether or not it is unique, and, if so, whether that filename is executable. */ ! if (absolute_program ((char *)hint_text)) { /* Perform tilde expansion on what's passed, so we don't end up passing filenames with tildes directly to stat(). */ if (*hint_text == '~') ! hint = bash_tilde_expand ((char *)hint_text); else hint = savestring (hint_text); --- 1060,1069 ---- whether or not it is unique, and, if so, whether that filename is executable. */ ! if (absolute_program (hint_text)) { /* Perform tilde expansion on what's passed, so we don't end up passing filenames with tildes directly to stat(). */ if (*hint_text == '~') ! hint = bash_tilde_expand (hint_text); else hint = savestring (hint_text); *************** *** 1147,1151 **** free (filename_hint); ! filename_hint = xmalloc (2 + strlen (current_path) + hint_len); sprintf (filename_hint, "%s/%s", current_path, hint); --- 1204,1208 ---- free (filename_hint); ! filename_hint = (char *)xmalloc (2 + strlen (current_path) + hint_len); sprintf (filename_hint, "%s/%s", current_path, hint); *************** *** 1182,1186 **** tl = strlen (hint_text); l = vl - hint_len; /* # of chars added */ ! temp = xmalloc (l + 2 + tl); strcpy (temp, hint_text); strcpy (temp + tl, val + vl - l); --- 1239,1243 ---- tl = strlen (hint_text); l = vl - hint_len; /* # of chars added */ ! temp = (char *)xmalloc (l + 2 + tl); strcpy (temp, hint_text); strcpy (temp + tl, val + vl - l); *************** *** 1259,1263 **** else { ! value = xmalloc (1 + start_len + strlen (matches[cmd_index])); if (start_len == 1) --- 1316,1320 ---- else { ! value = (char *)xmalloc (1 + start_len + strlen (matches[cmd_index])); if (start_len == 1) *************** *** 1315,1319 **** else { ! char *value = xmalloc (4 + strlen (varlist[varlist_index])); if (first_char_loc) --- 1372,1378 ---- else { ! char *value; ! ! value = (char *)xmalloc (4 + strlen (varlist[varlist_index])); if (first_char_loc) *************** *** 1356,1360 **** first_char_loc++; ! list = hostnames_matching (&text[first_char_loc]); list_index = 0; } --- 1415,1419 ---- first_char_loc++; ! list = hostnames_matching ((char *)text+first_char_loc); list_index = 0; } *************** *** 1364,1368 **** char *t; ! t = xmalloc (2 + strlen (list[list_index])); *t = first_char; strcpy (t + first_char_loc, list[list_index]); --- 1423,1427 ---- char *t; ! t = (char *)xmalloc (2 + strlen (list[list_index])); *t = first_char; strcpy (t + first_char_loc, list[list_index]); *************** *** 1374,1377 **** --- 1433,1475 ---- } + char * + bash_groupname_completion_function (text, state) + const char *text; + int state; + { + #if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H) + return ((char *)NULL); + #else + static char *gname = (char *)NULL; + static struct group *grent; + static int gnamelen; + char *value; + + if (state == 0) + { + FREE (gname); + gname = savestring (text); + gnamelen = strlen (gname); + + setgrent (); + } + + while (grent = getgrent ()) + { + if (gnamelen == 0 || (STREQN (gname, grent->gr_name, gnamelen))) + break; + } + + if (grent == 0) + { + endgrent (); + return ((char *)NULL); + } + + value = savestring (grent->gr_name); + return (value); + #endif + } + /* Functions to perform history and alias expansions on the current line. */ *************** *** 1430,1435 **** char *new_line; { ! int old_point = rl_point; ! int at_end = rl_point == rl_end; /* If the line was history and alias expanded, then make that --- 1528,1535 ---- char *new_line; { ! int old_point, at_end; ! ! old_point = rl_point; ! at_end = rl_point == rl_end; /* If the line was history and alias expanded, then make that *************** *** 1595,1599 **** if (expanded_string == 0) { ! new_line = xmalloc (1); new_line[0] = '\0'; } --- 1695,1699 ---- if (expanded_string == 0) { ! new_line = (char *)xmalloc (1); new_line[0] = '\0'; } *************** *** 1643,1647 **** 0, (char *)0, ! (Function *) 0, }; --- 1743,1747 ---- 0, (char *)0, ! (sh_iv_item_func_t *) 0, }; *************** *** 1649,1653 **** _ignore_completion_names (names, name_func) char **names; ! Function *name_func; { char **newnames; --- 1749,1753 ---- _ignore_completion_names (names, name_func) char **names; ! sh_ignore_func_t *name_func; { char **newnames; *************** *** 1738,1742 **** static int name_is_acceptable (name) ! char *name; { struct ign *p; --- 1838,1842 ---- static int name_is_acceptable (name) ! const char *name; { struct ign *p; *************** *** 1783,1787 **** static int test_for_directory (name) ! char *name; { struct stat finfo; --- 1883,1887 ---- static int test_for_directory (name) ! const char *name; { struct stat finfo; *************** *** 1809,1813 **** static int return_zero (name) ! char *name; { return 0; --- 1909,1913 ---- static int return_zero (name) ! const char *name; { return 0; *************** *** 1867,1871 **** free (new_dirname); free (local_dirname); ! *dirname = xmalloc (1); **dirname = '\0'; return 1; --- 1967,1971 ---- free (new_dirname); free (local_dirname); ! *dirname = (char *)xmalloc (1); **dirname = '\0'; return 1; *************** *** 1892,1896 **** { len2 = strlen (temp2); ! temp2 = xrealloc (temp2, len2 + 2); temp2[len2] = '/'; temp2[len2 + 1] = '\0'; --- 1992,1996 ---- { len2 = strlen (temp2); ! temp2 = (char *)xrealloc (temp2, len2 + 2); temp2[len2] = '/'; temp2[len2 + 1] = '\0'; *************** *** 1943,1947 **** { harry_size += 10; ! history_completion_array = (char **) xrealloc (history_completion_array, harry_size * sizeof (char *)); } --- 2043,2047 ---- { harry_size += 10; ! history_completion_array = (char **)xrealloc (history_completion_array, harry_size * sizeof (char *)); } *************** *** 1954,1958 **** /* Sort the complete list of tokens. */ ! qsort (history_completion_array, harry_len, sizeof (char *), (Function *)qsort_string_compare); } } --- 2054,2058 ---- /* Sort the complete list of tokens. */ ! qsort (history_completion_array, harry_len, sizeof (char *), (QSFUNC *)qsort_string_compare); } } *************** *** 1960,1968 **** static char * history_completion_generator (hint_text, state) ! char *hint_text; int state; { static int local_index, len; ! static char *text; /* If this is the first call to the generator, then initialize the --- 2060,2068 ---- static char * history_completion_generator (hint_text, state) ! const char *hint_text; int state; { static int local_index, len; ! static const char *text; /* If this is the first call to the generator, then initialize the *************** *** 1988,1991 **** --- 2088,2093 ---- int count, key; { + int r; + rl_compentry_func_t *orig_func; rl_completion_func_t *orig_attempt_func; *************** *** 1997,2006 **** if (rl_last_func == dynamic_complete_history) ! rl_complete_internal ('?'); else ! rl_complete_internal (TAB); rl_completion_entry_function = orig_func; rl_attempted_completion_function = orig_attempt_func; } --- 2099,2109 ---- if (rl_last_func == dynamic_complete_history) ! r = rl_complete_internal ('?'); else ! r = rl_complete_internal (TAB); rl_completion_entry_function = orig_func; rl_attempted_completion_function = orig_attempt_func; + return r; } *************** *** 2216,2220 **** l = strlen (text); ! ret = xmalloc (l + 1); for (quoted = quote_char, p = text, r = ret; p && *p; p++) { --- 2319,2323 ---- l = strlen (text); ! ret = (char *)xmalloc (l + 1); for (quoted = quote_char, p = text, r = ret; p && *p; p++) { *************** *** 2256,2260 **** l = strlen (text); ! ret = xmalloc ((2 * l) + 1); for (s = text, r = ret; *s; s++) { --- 2359,2363 ---- l = strlen (text); ! ret = (char *)xmalloc ((2 * l) + 1); for (s = text, r = ret; *s; s++) { *************** *** 2359,2363 **** care of avoiding doubled opening quotes. */ rlen = strlen (rtext); ! ret = xmalloc (rlen + 1); strcpy (ret, rtext); --- 2462,2466 ---- care of avoiding doubled opening quotes. */ rlen = strlen (rtext); ! ret = (char *)xmalloc (rlen + 1); strcpy (ret, rtext); *************** *** 2485,2489 **** Keymap kmap; char *kseq, *value; ! int i, kstart, len, ok; if (cmd_xmap == 0) --- 2588,2592 ---- Keymap kmap; char *kseq, *value; ! int i, kstart; if (cmd_xmap == 0) diff -Nrc2 bash-2.05/bashline.h bash-2.05a/bashline.h *** bash-2.05/bashline.h Mon Nov 27 12:23:19 2000 --- bash-2.05a/bashline.h Mon Sep 10 13:45:18 2001 *************** *** 27,30 **** --- 27,31 ---- extern void posix_readline_initialize __P((int)); + extern int enable_hostname_completion __P((int)); extern void initialize_readline __P((void)); extern void bashline_reinitialize __P((void)); *************** *** 35,38 **** --- 36,40 ---- /* Used by programmable completion code. */ extern char *command_word_completion_function __P((const char *, int)); + extern char *bash_groupname_completion_function __P((const char *, int)); extern char **get_hostname_list __P((void)); diff -Nrc2 bash-2.05/bracecomp.c bash-2.05a/bracecomp.c *** bash-2.05/bracecomp.c Fri Nov 3 11:22:00 2000 --- bash-2.05a/bracecomp.c Thu Aug 2 12:15:44 2001 *************** *** 40,45 **** #include - extern char *sh_backslash_quote (); - /* Find greatest common prefix of two strings. */ static int --- 40,43 ---- *************** *** 79,83 **** } ! result = xmalloc (result_size = 16); *result = '\0'; --- 77,81 ---- } ! result = (char *)xmalloc (result_size = 16); *result = '\0'; *************** *** 103,107 **** top level, and there isn't a consistent prefix. */ result_size += 1; ! result = xrealloc (result, result_size); result[0] = '{'; result[1] = '\0'; flag++; --- 101,105 ---- top level, and there isn't a consistent prefix. */ result_size += 1; ! result = (char *)xrealloc (result, result_size); result[0] = '{'; result[1] = '\0'; flag++; *************** *** 122,126 **** insert the (quoted) prefix and an opening brace. */ tlen = gcd - gcd_zero; ! x = xmalloc (tlen + 1); strncpy (x, array[start] + gcd_zero, tlen); x[tlen] = '\0'; --- 120,124 ---- insert the (quoted) prefix and an opening brace. */ tlen = gcd - gcd_zero; ! x = (char *)xmalloc (tlen + 1); strncpy (x, array[start] + gcd_zero, tlen); x[tlen] = '\0'; *************** *** 128,132 **** free (x); result_size += strlen (subterm) + 1; ! result = xrealloc (result, result_size); strcat (result, subterm); free (subterm); --- 126,130 ---- free (x); result_size += strlen (subterm) + 1; ! result = (char *)xrealloc (result, result_size); strcat (result, subterm); free (subterm); *************** *** 137,141 **** result_size += strlen (subterm) + 1; ! result = xrealloc (result, result_size); strcat (result, subterm); strcat (result, ","); --- 135,139 ---- result_size += strlen (subterm) + 1; ! result = (char *)xrealloc (result, result_size); strcat (result, subterm); strcat (result, ","); diff -Nrc2 bash-2.05/braces.c bash-2.05a/braces.c *** bash-2.05/braces.c Wed Feb 14 16:51:23 2001 --- bash-2.05a/braces.c Thu May 10 12:25:46 2001 *************** *** 41,48 **** #define brace_whitespace(c) (!(c) || (c) == ' ' || (c) == '\t' || (c) == '\n') - #if defined (SHELL) - extern char *extract_command_subst (); - #endif - /* Basic idea: --- 41,44 ---- *************** *** 57,62 **** int brace_arg_separator = ','; static int brace_gobbler (); ! static char **expand_amble (), **array_concat (); /* Return an array of strings; the brace expansion of TEXT. */ --- 53,65 ---- int brace_arg_separator = ','; + #if defined (__P) + static int brace_gobbler __P((char *, int *, int)); + static char **expand_amble __P((char *)); + static char **array_concat __P((char **, char **)); + #else static int brace_gobbler (); ! static char **expand_amble (); ! static char **array_concat (); ! #endif /* Return an array of strings; the brace expansion of TEXT. */ diff -Nrc2 bash-2.05/builtins/Makefile.in bash-2.05a/builtins/Makefile.in *** bash-2.05/builtins/Makefile.in Sat Oct 14 17:35:28 2000 --- bash-2.05a/builtins/Makefile.in Tue Oct 23 14:32:18 2001 *************** *** 37,41 **** PROFILE_FLAGS = @PROFILE_FLAGS@ CFLAGS = @CFLAGS@ ! LOCAL_CFLAGS = @LOCAL_CFLAGS@ CPPFLAGS = @CPPFLAGS@ DEFS = @DEFS@ --- 37,41 ---- PROFILE_FLAGS = @PROFILE_FLAGS@ CFLAGS = @CFLAGS@ ! LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} CPPFLAGS = @CPPFLAGS@ DEFS = @DEFS@ *************** *** 47,54 **** BASHINCDIR = ${topdir}/include INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$(srcdir) ! CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) $(CPPFLAGS) \ ! ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS) MKBUILTINS = mkbuiltins$(EXEEXT) --- 47,62 ---- BASHINCDIR = ${topdir}/include + RL_INCLUDEDIR = @RL_INCLUDEDIR@ + INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$(srcdir) ! CCFLAGS_FOR_BUILD = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \ ! $(CPPFLAGS) ${INCLUDES} $(LOCAL_CFLAGS) ! ! CCFLAGS = $(CCFLAGS_FOR_BUILD) $(CFLAGS) ! ! GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ ! -Wcast-align -Wstrict-prototypes -Wconversion \ ! -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic MKBUILTINS = mkbuiltins$(EXEEXT) *************** *** 132,136 **** mkbuiltins.o: mkbuiltins.c $(RM) $@ ! $(CC_FOR_BUILD) -c $(CCFLAGS) $< mkbuiltins$(EXEEXT): mkbuiltins.o --- 140,144 ---- mkbuiltins.o: mkbuiltins.c $(RM) $@ ! $(CC_FOR_BUILD) -c $(CCFLAGS_FOR_BUILD) $< mkbuiltins$(EXEEXT): mkbuiltins.o *************** *** 152,156 **** psize.aux: psize.c ! $(CC_FOR_BUILD) $(CCFLAGS) -o $@ $(srcdir)/psize.c documentation: builtins.texi --- 160,164 ---- psize.aux: psize.c ! $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(srcdir)/psize.c documentation: builtins.texi *************** *** 215,228 **** bashgetopt.o: ../config.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h bashgetopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h ! bashgetopt.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/error.h ! bashgetopt.o: $(topdir)/variables.h $(topdir)/quit.h $(BASHINCDIR)/maxpath.h bashgetopt.o: $(topdir)/unwind_prot.h $(topdir)/dispose_cmd.h bashgetopt.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/sig.h bashgetopt.o: $(topdir)/pathnames.h $(topdir)/externs.h $(srcdir)/common.h common.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h common.o: $(topdir)/shell.h $(topdir)/syntax.h ../config.h $(topdir)/bashjmp.h $(BASHINCDIR)/posixjmp.h common.o: $(topdir)/sig.h $(topdir)/command.h ! common.o: $(topdir)/general.h $(BASHINCDIR)/stdc.h $(BASHINCDIR)/memalloc.h ! common.o: $(topdir)/variables.h $(topdir)/input.h common.o: $(topdir)/siglist.h $(topdir)/bashhist.h $(topdir)/quit.h common.o: $(topdir)/unwind_prot.h $(BASHINCDIR)/maxpath.h $(topdir)/jobs.h --- 223,237 ---- bashgetopt.o: ../config.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h bashgetopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h ! bashgetopt.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/error.h ! bashgetopt.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/quit.h $(BASHINCDIR)/maxpath.h bashgetopt.o: $(topdir)/unwind_prot.h $(topdir)/dispose_cmd.h bashgetopt.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/sig.h bashgetopt.o: $(topdir)/pathnames.h $(topdir)/externs.h $(srcdir)/common.h + bashgetopt.o: $(BASHINCDIR)/chartypes.h common.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h common.o: $(topdir)/shell.h $(topdir)/syntax.h ../config.h $(topdir)/bashjmp.h $(BASHINCDIR)/posixjmp.h common.o: $(topdir)/sig.h $(topdir)/command.h ! common.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/stdc.h $(BASHINCDIR)/memalloc.h ! common.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/input.h common.o: $(topdir)/siglist.h $(topdir)/bashhist.h $(topdir)/quit.h common.o: $(topdir)/unwind_prot.h $(BASHINCDIR)/maxpath.h $(topdir)/jobs.h *************** *** 230,238 **** common.o: $(topdir)/subst.h $(topdir)/execute_cmd.h $(topdir)/error.h common.o: $(topdir)/externs.h $(topdir)/pathnames.h ./builtext.h evalfile.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h ${BASHINCDIR}/filecntl.h evalfile.o: $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h evalfile.o: $(topdir)/shell.h $(topdir)/syntax.h ../config.h $(topdir)/bashjmp.h ! evalfile.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/error.h ! evalfile.o: $(topdir)/variables.h $(topdir)/quit.h $(BASHINCDIR)/maxpath.h evalfile.o: $(topdir)/unwind_prot.h $(topdir)/dispose_cmd.h evalfile.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/sig.h --- 239,248 ---- common.o: $(topdir)/subst.h $(topdir)/execute_cmd.h $(topdir)/error.h common.o: $(topdir)/externs.h $(topdir)/pathnames.h ./builtext.h + common.o: $(BASHINCDIR)/chartypes.h evalfile.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h ${BASHINCDIR}/filecntl.h evalfile.o: $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h evalfile.o: $(topdir)/shell.h $(topdir)/syntax.h ../config.h $(topdir)/bashjmp.h ! evalfile.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/error.h ! evalfile.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/quit.h $(BASHINCDIR)/maxpath.h evalfile.o: $(topdir)/unwind_prot.h $(topdir)/dispose_cmd.h evalfile.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/sig.h *************** *** 244,248 **** evalstring.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h $(BASHINCDIR)/posixjmp.h evalstring.o: $(topdir)/sig.h $(topdir)/command.h $(topdir)/siglist.h ! evalstring.o: $(BASHINCDIR)/memalloc.h $(topdir)/variables.h $(topdir)/input.h evalstring.o: $(topdir)/quit.h $(topdir)/unwind_prot.h evalstring.o: $(BASHINCDIR)/maxpath.h $(topdir)/jobs.h $(topdir)/builtins.h --- 254,258 ---- evalstring.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h $(BASHINCDIR)/posixjmp.h evalstring.o: $(topdir)/sig.h $(topdir)/command.h $(topdir)/siglist.h ! evalstring.o: $(BASHINCDIR)/memalloc.h $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/input.h evalstring.o: $(topdir)/quit.h $(topdir)/unwind_prot.h evalstring.o: $(BASHINCDIR)/maxpath.h $(topdir)/jobs.h $(topdir)/builtins.h *************** *** 251,257 **** evalstring.o: $(topdir)/flags.h $(topdir)/input.h $(topdir)/execute_cmd.h evalstring.o: $(topdir)/bashhist.h $(srcdir)/common.h getopt.o: ../config.h $(BASHINCDIR)/memalloc.h getopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h $(topdir)/command.h ! getopt.o: $(topdir)/general.h $(topdir)/error.h $(topdir)/variables.h getopt.o: $(topdir)/quit.h $(BASHINCDIR)/maxpath.h $(topdir)/unwind_prot.h getopt.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h --- 261,268 ---- evalstring.o: $(topdir)/flags.h $(topdir)/input.h $(topdir)/execute_cmd.h evalstring.o: $(topdir)/bashhist.h $(srcdir)/common.h + evalstring.o: $(topdir)/trap.h $(topdir)/redir.h getopt.o: ../config.h $(BASHINCDIR)/memalloc.h getopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h $(topdir)/command.h ! getopt.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/error.h $(topdir)/variables.h $(topdir)/conftypes.h getopt.o: $(topdir)/quit.h $(BASHINCDIR)/maxpath.h $(topdir)/unwind_prot.h getopt.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h *************** *** 264,333 **** # def files alias.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! alias.o: $(topdir)/error.h $(topdir)/general.h $(BASHINCDIR)/maxpath.h alias.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h alias.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/common.h ! alias.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h bind.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h bind.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h bind.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/bashgetopt.h ! bind.o: $(topdir)/general.h $(BASHINCDIR)/maxpath.h $(topdir)/bashline.h ! bind.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h break.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! break.o: $(topdir)/error.h $(topdir)/general.h break.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h break.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! break.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h builtin.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! builtin.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/externs.h builtin.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h builtin.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h ! builtin.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h cd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! cd.o: $(topdir)/general.h $(topdir)/quit.h $(topdir)/dispose_cmd.h cd.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h ! cd.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h cd.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h command.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! command.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/externs.h command.o: $(topdir)/quit.h $(srcdir)/bashgetopt.h $(BASHINCDIR)/maxpath.h command.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h ! command.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h declare.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! declare.o: $(topdir)/error.h $(topdir)/general.h declare.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h declare.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! declare.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h echo.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! echo.o: $(topdir)/general.h $(topdir)/subst.h $(topdir)/externs.h echo.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h ! echo.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h echo.o: $(BASHINCDIR)/maxpath.h enable.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! enable.o: $(topdir)/error.h $(topdir)/general.h enable.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h enable.o: $(topdir)/subst.h $(topdir)/externs.h ! enable.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h enable.o: $(BASHINCDIR)/maxpath.h enable.o: $(topdir)/pcomplete.h eval.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! eval.o: $(topdir)/error.h $(topdir)/general.h eval.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h eval.o: $(topdir)/subst.h $(topdir)/externs.h ! eval.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h eval.o: $(BASHINCDIR)/maxpath.h exec.o: $(topdir)/bashtypes.h exec.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! exec.o: $(topdir)/error.h $(topdir)/general.h exec.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h exec.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/flags.h ! exec.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h exec.o: $(srcdir)/common.h $(topdir)/execute_cmd.h $(BASHINCDIR)/maxpath.h exec.o: $(topdir)/findcmd.h exit.o: $(topdir)/bashtypes.h exit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! exit.o: $(topdir)/error.h $(topdir)/general.h exit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h exit.o: $(topdir)/subst.h $(topdir)/externs.h ! exit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h exit.o: $(BASHINCDIR)/maxpath.h ./builtext.h fc.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h --- 275,345 ---- # def files alias.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! alias.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h alias.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h alias.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/common.h ! alias.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h bind.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h bind.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h bind.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/bashgetopt.h ! bind.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h $(topdir)/bashline.h ! bind.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h break.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! break.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h break.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h break.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! break.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h builtin.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! builtin.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h builtin.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h builtin.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h ! builtin.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h cd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! cd.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose_cmd.h cd.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h ! cd.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h cd.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h command.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! command.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h command.o: $(topdir)/quit.h $(srcdir)/bashgetopt.h $(BASHINCDIR)/maxpath.h command.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h ! command.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h declare.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! declare.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h declare.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h declare.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! declare.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ! declare.o: $(topdir)/arrayfunc.h echo.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! echo.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h echo.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h ! echo.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h echo.o: $(BASHINCDIR)/maxpath.h enable.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! enable.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h enable.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h enable.o: $(topdir)/subst.h $(topdir)/externs.h ! enable.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h enable.o: $(BASHINCDIR)/maxpath.h enable.o: $(topdir)/pcomplete.h eval.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! eval.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h eval.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h eval.o: $(topdir)/subst.h $(topdir)/externs.h ! eval.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h eval.o: $(BASHINCDIR)/maxpath.h exec.o: $(topdir)/bashtypes.h exec.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! exec.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h exec.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h exec.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/flags.h ! exec.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h exec.o: $(srcdir)/common.h $(topdir)/execute_cmd.h $(BASHINCDIR)/maxpath.h exec.o: $(topdir)/findcmd.h exit.o: $(topdir)/bashtypes.h exit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! exit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h exit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h exit.o: $(topdir)/subst.h $(topdir)/externs.h ! exit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h exit.o: $(BASHINCDIR)/maxpath.h ./builtext.h fc.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h *************** *** 335,485 **** fc.o: $(topdir)/bashhist.h fc.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! fc.o: $(topdir)/general.h $(BASHINCDIR)/maxpath.h fc.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h fc.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/shell.h $(topdir)/syntax.h ! fc.o: $(topdir)/flags.h $(topdir)/unwind_prot.h $(topdir)/variables.h ! fc.o: $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h fg_bg.o: $(topdir)/bashtypes.h fg_bg.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! fg_bg.o: $(topdir)/error.h $(topdir)/general.h fg_bg.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h fg_bg.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! fg_bg.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h getopts.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! getopts.o: $(topdir)/error.h $(topdir)/general.h getopts.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h getopts.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! getopts.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h hash.o: $(topdir)/builtins.h $(topdir)/command.h $(topdir)/quit.h hash.o: $(topdir)/findcmd.h $(topdir)/hashlib.h hash.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! hash.o: $(topdir)/error.h $(topdir)/general.h ! hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h hash.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h help.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! help.o: $(topdir)/error.h $(topdir)/general.h help.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h help.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h history.o: $(topdir)/bashtypes.h history.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! history.o: $(topdir)/error.h $(topdir)/general.h history.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h history.o: $(topdir)/subst.h $(topdir)/externs.h history.o: ${BASHINCDIR}/filecntl.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h ! history.o: $(topdir)/variables.h $(topdir)/bashhist.h $(BASHINCDIR)/maxpath.h inlib.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! inlib.o: $(topdir)/error.h $(topdir)/general.h ! inlib.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h inlib.o: $(BASHINCDIR)/maxpath.h $(topdir)/subst.h $(topdir)/externs.h inlib.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h jobs.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! jobs.o: $(topdir)/general.h $(topdir)/quit.h $(srcdir)/bashgetopt.h jobs.o: $(BASHINCDIR)/maxpath.h $(topdir)/externs.h jobs.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h ! jobs.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h kill.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! kill.o: $(topdir)/general.h $(topdir)/subst.h $(topdir)/externs.h kill.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h kill.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/trap.h $(topdir)/unwind_prot.h ! kill.o: $(topdir)/variables.h $(BASHINCDIR)/maxpath.h let.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! let.o: $(topdir)/error.h $(topdir)/general.h let.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h let.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! let.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h printf.o: ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/bashjmp.h ! printf.o: $(topdir)/command.h $(topdir)/error.h $(topdir)/general.h printf.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h printf.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h printf.o: $(topdir)/pathnames.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h ! printf.o: $(topdir)/variables.h $(BASHINCDIR)/stdc.h $(srcdir)/bashgetopt.h pushd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! pushd.o: $(topdir)/error.h $(topdir)/general.h pushd.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h pushd.o: $(topdir)/subst.h $(topdir)/externs.h ! pushd.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h pushd.o: $(BASHINCDIR)/maxpath.h $(srcdir)/common.h ./builtext.h read.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! read.o: $(topdir)/error.h $(topdir)/general.h read.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h read.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! read.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h read.o: $(BASHINCDIR)/shtty.h return.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! return.o: $(topdir)/error.h $(topdir)/general.h return.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h return.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h set.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! set.o: $(topdir)/general.h $(topdir)/subst.h $(topdir)/externs.h set.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h ! set.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h set.o: $(BASHINCDIR)/maxpath.h $(topdir)/error.h setattr.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! setattr.o: $(topdir)/error.h $(topdir)/general.h $(BASHINCDIR)/maxpath.h setattr.o: $(topdir)/quit.h $(srcdir)/common.h $(srcdir)/bashgetopt.h setattr.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h setattr.o: $(topdir)/externs.h ! setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h shift.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! shift.o: $(topdir)/error.h $(topdir)/general.h shift.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h shift.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! shift.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h source.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! source.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/findcmd.h source.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h source.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! source.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h suspend.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! suspend.o: $(topdir)/error.h $(topdir)/general.h suspend.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h suspend.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! suspend.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h test.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! test.o: $(topdir)/error.h $(topdir)/general.h test.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h test.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! test.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h test.o: $(topdir)/test.h times.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! times.o: $(topdir)/error.h $(topdir)/general.h times.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h times.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! times.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h times.o: $(BASHINCDIR)/posixtime.h trap.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! trap.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/externs.h trap.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h trap.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h ! trap.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h trap.o: $(topdir)/findcmd.h type.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! type.o: $(topdir)/error.h $(topdir)/general.h type.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h type.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h type.o: $(topdir)/externs.h $(topdir)/hashcmd.h ! type.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h ulimit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! ulimit.o: $(topdir)/error.h $(topdir)/general.h ulimit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h ulimit.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! ulimit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h umask.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! umask.o: $(topdir)/error.h $(topdir)/general.h umask.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h umask.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! umask.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h wait.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! wait.o: $(topdir)/error.h $(topdir)/general.h wait.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h wait.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! wait.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h shopt.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! shopt.o: $(topdir)/error.h $(topdir)/general.h shopt.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h shopt.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! shopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h shopt.o: $(srcdir)/common.h $(srcdir)/bashgetopt.h --- 347,504 ---- fc.o: $(topdir)/bashhist.h fc.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! fc.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h fc.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h fc.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/shell.h $(topdir)/syntax.h ! fc.o: $(topdir)/flags.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ! fc.o: $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h $(BASHINCDIR)/chartypes.h fg_bg.o: $(topdir)/bashtypes.h fg_bg.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! fg_bg.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h fg_bg.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h fg_bg.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! fg_bg.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h getopts.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! getopts.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h getopts.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h getopts.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! getopts.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h hash.o: $(topdir)/builtins.h $(topdir)/command.h $(topdir)/quit.h hash.o: $(topdir)/findcmd.h $(topdir)/hashlib.h hash.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! hash.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h ! hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h hash.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h help.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! help.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h help.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h help.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ! help.o: ${srcdir}/common.h ../version.h history.o: $(topdir)/bashtypes.h history.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! history.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h history.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h history.o: $(topdir)/subst.h $(topdir)/externs.h history.o: ${BASHINCDIR}/filecntl.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h ! history.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/bashhist.h $(BASHINCDIR)/maxpath.h inlib.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! inlib.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h ! inlib.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h inlib.o: $(BASHINCDIR)/maxpath.h $(topdir)/subst.h $(topdir)/externs.h inlib.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h jobs.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! jobs.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(srcdir)/bashgetopt.h jobs.o: $(BASHINCDIR)/maxpath.h $(topdir)/externs.h jobs.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h ! jobs.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h kill.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h ! kill.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h kill.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h kill.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/trap.h $(topdir)/unwind_prot.h ! kill.o: $(topdir)/variables.h $(topdir)/conftypes.h $(BASHINCDIR)/maxpath.h let.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! let.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h let.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h let.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! let.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h printf.o: ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/bashjmp.h ! printf.o: $(topdir)/command.h $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h printf.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h printf.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h printf.o: $(topdir)/pathnames.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h ! printf.o: $(topdir)/variables.h $(topdir)/conftypes.h $(BASHINCDIR)/stdc.h $(srcdir)/bashgetopt.h ! printf.o: $(topdir)/bashtypes.h ${srcdir}/common.h $(BASHINCDIR)/chartypes.h pushd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! pushd.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h pushd.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h pushd.o: $(topdir)/subst.h $(topdir)/externs.h ! pushd.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h pushd.o: $(BASHINCDIR)/maxpath.h $(srcdir)/common.h ./builtext.h read.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! read.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h read.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h read.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! read.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h read.o: $(BASHINCDIR)/shtty.h + read.o: $(topdir)/arrayfunc.h return.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! return.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h return.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h return.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h set.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! set.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h set.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h ! set.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h set.o: $(BASHINCDIR)/maxpath.h $(topdir)/error.h + set.o: $(topdir)/arrayfunc.h setattr.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! setattr.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h setattr.o: $(topdir)/quit.h $(srcdir)/common.h $(srcdir)/bashgetopt.h setattr.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h setattr.o: $(topdir)/externs.h ! setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ! setattr.o: $(topdir)/arrayfunc.h shift.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! shift.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h shift.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h shift.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! shift.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h source.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! source.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/findcmd.h source.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h source.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! source.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h suspend.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! suspend.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h suspend.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h suspend.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! suspend.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h test.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! test.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h test.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h test.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! test.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h test.o: $(topdir)/test.h times.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! times.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h times.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h times.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! times.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h times.o: $(BASHINCDIR)/posixtime.h trap.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! trap.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h trap.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h trap.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h ! trap.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h trap.o: $(topdir)/findcmd.h type.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! type.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h type.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h type.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h type.o: $(topdir)/externs.h $(topdir)/hashcmd.h ! type.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ulimit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! ulimit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h ulimit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h ulimit.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! ulimit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h umask.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! umask.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h umask.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h umask.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! umask.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ! umask.o: $(BASHINCDIR)/chartypes.h wait.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! wait.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h wait.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h wait.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! wait.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ! wait.o: $(BASHINCDIR)/chartypes.h shopt.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ! shopt.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h shopt.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h shopt.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ! shopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h shopt.o: $(srcdir)/common.h $(srcdir)/bashgetopt.h diff -Nrc2 bash-2.05/builtins/alias.def bash-2.05a/builtins/alias.def *** bash-2.05/builtins/alias.def Fri Nov 3 11:18:42 2000 --- bash-2.05a/builtins/alias.def Tue Sep 11 15:26:14 2001 *************** *** 52,57 **** # include "bashgetopt.h" ! extern int interactive; ! static void print_alias (); /* Hack the alias command in a Korn shell way. */ --- 52,56 ---- # include "bashgetopt.h" ! static void print_alias __P((alias_t *)); /* Hack the alias command in a Korn shell way. */ diff -Nrc2 bash-2.05/builtins/bashgetopt.c bash-2.05a/builtins/bashgetopt.c *** bash-2.05/builtins/bashgetopt.c Thu Aug 5 07:39:28 1999 --- bash-2.05a/builtins/bashgetopt.c Wed Sep 12 11:56:33 2001 *************** *** 26,29 **** --- 26,30 ---- #include "../bashansi.h" + #include #include *************** *** 125,129 **** /* optional numeric argument */ if (lcurrent->word->word[sp+1]) { ! if (digit(lcurrent->word->word[sp+1])) { list_optarg = lcurrent->word->word + sp + 1; lcurrent = lcurrent->next; --- 126,130 ---- /* optional numeric argument */ if (lcurrent->word->word[sp+1]) { ! if (DIGIT(lcurrent->word->word[sp+1])) { list_optarg = lcurrent->word->word + sp + 1; lcurrent = lcurrent->next; diff -Nrc2 bash-2.05/builtins/bashgetopt.h bash-2.05a/builtins/bashgetopt.h *** bash-2.05/builtins/bashgetopt.h Thu Aug 5 07:28:57 1999 --- bash-2.05a/builtins/bashgetopt.h Tue Sep 11 15:25:47 2001 *************** *** 24,27 **** --- 24,29 ---- # define __BASH_GETOPT_H + #include + extern char *list_optarg; *************** *** 31,37 **** extern WORD_LIST *loptend; ! extern int internal_getopt (); ! extern void reset_internal_getopt (); ! extern void report_bad_option (); #endif /* !__BASH_GETOPT_H */ --- 33,39 ---- extern WORD_LIST *loptend; ! extern int internal_getopt __P((WORD_LIST *, char *)); ! extern void reset_internal_getopt __P((void)); ! extern void report_bad_option __P((void)); #endif /* !__BASH_GETOPT_H */ diff -Nrc2 bash-2.05/builtins/bind.def bash-2.05a/builtins/bind.def *** bash-2.05/builtins/bind.def Wed Feb 14 17:07:33 2001 --- bash-2.05a/builtins/bind.def Tue Aug 28 13:03:19 2001 *************** *** 77,82 **** #include "common.h" ! static int query_bindings (); ! static int unbind_command (); extern int no_line_editing; --- 77,82 ---- #include "common.h" ! static int query_bindings __P((char *)); ! static int unbind_command __P((char *)); extern int no_line_editing; *************** *** 103,107 **** { int return_code; - FILE *old_rl_outstream; Keymap kmap, saved_keymap; int flags, opt; --- 103,106 ---- *************** *** 119,126 **** initialize_readline (); ! /* Cannot use unwind_protect_pointer () on "FILE *", it is only ! guaranteed to work for strings. */ ! /* XXX -- see if we can use unwind_protect here */ ! old_rl_outstream = rl_outstream; rl_outstream = stdout; --- 118,124 ---- initialize_readline (); ! begin_unwind_frame ("bind_builtin"); ! unwind_protect_var (rl_outstream); ! rl_outstream = stdout; *************** *** 243,247 **** if ((flags & RFLAG) && remove_seq) { ! if (rl_set_key (remove_seq, (Function *)NULL, rl_get_keymap ()) != 0) { builtin_error ("cannot unbind %s", remove_seq); --- 241,245 ---- if ((flags & RFLAG) && remove_seq) { ! if (rl_set_key (remove_seq, (rl_command_func_t *)NULL, rl_get_keymap ()) != 0) { builtin_error ("cannot unbind %s", remove_seq); *************** *** 264,268 **** rl_set_keymap (saved_keymap); ! rl_outstream = old_rl_outstream; return (return_code); } --- 262,267 ---- rl_set_keymap (saved_keymap); ! run_unwind_frame ("bind_builtin"); ! return (return_code); } *************** *** 272,276 **** char *name; { ! Function *function; char **keyseqs; int j; --- 271,275 ---- char *name; { ! rl_command_func_t *function; char **keyseqs; int j; *************** *** 304,308 **** char *name; { ! Function *function; function = rl_named_function (name); --- 303,307 ---- char *name; { ! rl_command_func_t *function; function = rl_named_function (name); diff -Nrc2 bash-2.05/builtins/break.def bash-2.05a/builtins/break.def *** bash-2.05/builtins/break.def Wed Feb 21 12:03:00 2001 --- bash-2.05a/builtins/break.def Mon May 21 15:26:47 2001 *************** *** 43,47 **** extern int posixly_correct; ! static int check_loop_level (); /* The depth of while's and until's. */ --- 43,47 ---- extern int posixly_correct; ! static int check_loop_level __P((void)); /* The depth of while's and until's. */ *************** *** 60,64 **** WORD_LIST *list; { ! int newbreak; if (check_loop_level () == 0) --- 60,64 ---- WORD_LIST *list; { ! long newbreak; if (check_loop_level () == 0) *************** *** 95,99 **** WORD_LIST *list; { ! int newcont; if (check_loop_level () == 0) --- 95,99 ---- WORD_LIST *list; { ! long newcont; if (check_loop_level () == 0) diff -Nrc2 bash-2.05/builtins/builtin.def bash-2.05a/builtins/builtin.def *** bash-2.05/builtins/builtin.def Thu Aug 5 07:39:51 1999 --- bash-2.05a/builtins/builtin.def Tue Aug 28 13:02:02 2001 *************** *** 49,53 **** WORD_LIST *list; { ! Function *function; register char *command; --- 49,53 ---- WORD_LIST *list; { ! sh_builtin_func_t *function; register char *command; diff -Nrc2 bash-2.05/builtins/cd.def bash-2.05a/builtins/cd.def *** bash-2.05/builtins/cd.def Wed Oct 11 11:10:20 2000 --- bash-2.05a/builtins/cd.def Tue Sep 11 16:22:46 2001 *************** *** 54,64 **** #endif /* !errno */ ! extern int posixly_correct, interactive; extern int array_needs_making; extern char *bash_getcwd_errstr; ! static int change_to_directory (); ! static char *cdspell (); /* Change this to 1 to get cd spelling correction by default. */ --- 54,65 ---- #endif /* !errno */ ! extern int posixly_correct; extern int array_needs_making; extern char *bash_getcwd_errstr; ! static int bindpwd __P((int)); ! static int change_to_directory __P((char *, int)); ! static char *cdspell __P((char *)); /* Change this to 1 to get cd spelling correction by default. */ *************** *** 88,92 **** { char *dirname, *pwdvar; ! int old_symlinks, old_anm; SHELL_VAR *tvar; --- 89,93 ---- { char *dirname, *pwdvar; ! int old_anm; SHELL_VAR *tvar; *************** *** 425,429 **** n = (strlen (dirname) * 3 + 1) / 2 + 1; ! guess = xmalloc (n); switch (spname (dirname, guess)) --- 426,430 ---- n = (strlen (dirname) * 3 + 1) / 2 + 1; ! guess = (char *)xmalloc (n); switch (spname (dirname, guess)) diff -Nrc2 bash-2.05/builtins/command.def bash-2.05a/builtins/command.def *** bash-2.05/builtins/command.def Thu Aug 5 07:40:23 1999 --- bash-2.05a/builtins/command.def Tue Sep 11 10:59:12 2001 *************** *** 50,57 **** #include "common.h" extern int subshell_environment; ! static void restore_path (); ! static char *get_standard_path (); /* Run the commands mentioned in LIST without paying attention to shell --- 50,61 ---- #include "common.h" + #if defined (_CS_PATH) && defined (HAVE_CONFSTR) && !HAVE_DECL_CONFSTR + extern size_t confstr __P((int, char *, size_t)); + #endif + extern int subshell_environment; ! static void restore_path __P((char *)); ! static char *get_standard_path __P((void)); /* Run the commands mentioned in LIST without paying attention to shell *************** *** 132,140 **** } command = make_bare_simple_command (); command->value.Simple->words = (WORD_LIST *)copy_word_list (list); command->value.Simple->redirects = (REDIRECT *)NULL; ! command->flags |= (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION); ! command->value.Simple->flags |= (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION); #if 0 /* This breaks for things like ( cd /tmp ; command z ababa ; echo next ) --- 136,146 ---- } + #define COMMAND_BUILTIN_FLAGS (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION | CMD_COMMAND_BUILTIN) + command = make_bare_simple_command (); command->value.Simple->words = (WORD_LIST *)copy_word_list (list); command->value.Simple->redirects = (REDIRECT *)NULL; ! command->flags |= COMMAND_BUILTIN_FLAGS; ! command->value.Simple->flags |= COMMAND_BUILTIN_FLAGS; #if 0 /* This breaks for things like ( cd /tmp ; command z ababa ; echo next ) *************** *** 185,189 **** if (len > 0) { ! p = xmalloc ((int)len + 2); *p = '\0'; confstr (_CS_PATH, p, len); --- 191,195 ---- if (len > 0) { ! p = (char *)xmalloc (len + 2); *p = '\0'; confstr (_CS_PATH, p, len); diff -Nrc2 bash-2.05/builtins/common.c bash-2.05a/builtins/common.c *** bash-2.05/builtins/common.c Wed Feb 14 17:05:11 2001 --- bash-2.05a/builtins/common.c Mon Oct 29 13:14:49 2001 *************** *** 27,30 **** --- 27,31 ---- #include + #include #include "../bashtypes.h" #include "posixstat.h" *************** *** 64,87 **** #endif /* !errno */ ! #ifdef __STDC__ ! typedef int QSFUNC (const void *, const void *); ! #else ! typedef int QSFUNC (); ! #endif ! ! extern int no_symbolic_links, interactive, interactive_shell; extern int indirection_level, startup_state, subshell_environment; extern int line_number; extern int last_command_exit_value; extern int running_trap; - extern int variable_context; extern int posixly_correct; extern char *this_command_name, *shell_name; - extern COMMAND *global_command; extern char *bash_getcwd_errstr; /* Used by some builtins and the mainline code. */ ! Function *last_shell_builtin = (Function *)NULL; ! Function *this_shell_builtin = (Function *)NULL; /* **************************************************************** */ --- 65,80 ---- #endif /* !errno */ ! extern int no_symbolic_links; extern int indirection_level, startup_state, subshell_environment; extern int line_number; extern int last_command_exit_value; extern int running_trap; extern int posixly_correct; extern char *this_command_name, *shell_name; extern char *bash_getcwd_errstr; /* Used by some builtins and the mainline code. */ ! sh_builtin_func_t *last_shell_builtin = (sh_builtin_func_t *)NULL; ! sh_builtin_func_t *this_shell_builtin = (sh_builtin_func_t *)NULL; /* **************************************************************** */ *************** *** 338,342 **** shell; if not, call jump_to_top_level (DISCARD), which aborts the current command. */ ! int get_numeric_arg (list, fatal) WORD_LIST *list; --- 331,335 ---- shell; if not, call jump_to_top_level (DISCARD), which aborts the current command. */ ! long get_numeric_arg (list, fatal) WORD_LIST *list; *************** *** 360,366 **** --- 353,381 ---- no_args (list->next); } + return (count); } + /* Get an eight-bit status value from LIST */ + int + get_exitstat (list) + WORD_LIST *list; + { + int status; + long sval; + char *arg; + + arg = list->word->word; + if (arg == 0 || legal_number (arg, &sval) == 0) + { + builtin_error ("bad non-numeric arg `%s'", list->word->word); + return 255; + } + no_args (list->next); + + status = sval & 255; + return status; + } + /* Return the octal number parsed from STRING, or -1 to indicate that the string contained a bad number. */ *************** *** 376,382 **** digits++; result = (result * 8) + (*string++ - '0'); } ! if (!digits || result > 0777 || *string) result = -1; --- 391,399 ---- digits++; result = (result * 8) + (*string++ - '0'); + if (result > 0777) + return -1; } ! if (digits == 0 || *string) result = -1; *************** *** 410,414 **** if (the_current_working_directory == 0) { ! the_current_working_directory = xmalloc (PATH_MAX); the_current_working_directory[0] = '\0'; directory = getcwd (the_current_working_directory, PATH_MAX); --- 427,431 ---- if (the_current_working_directory == 0) { ! the_current_working_directory = (char *)xmalloc (PATH_MAX); the_current_working_directory[0] = '\0'; directory = getcwd (the_current_working_directory, PATH_MAX); *************** *** 450,454 **** { register char *word; ! int job, substring; if (list == 0) --- 467,471 ---- { register char *word; ! int job, substring_search; if (list == 0) *************** *** 463,467 **** word++; ! if (digit (*word) && all_digits (word)) { job = atoi (word); --- 480,484 ---- word++; ! if (DIGIT (*word) && all_digits (word)) { job = atoi (word); *************** *** 469,473 **** } ! substring = 0; switch (*word) { --- 486,490 ---- } ! substring_search = 0; switch (*word) { *************** *** 481,485 **** case '?': /* Substring search requested. */ ! substring++; word++; /* FALLTHROUGH */ --- 498,502 ---- case '?': /* Substring search requested. */ ! substring_search++; word++; /* FALLTHROUGH */ *************** *** 499,511 **** do { ! if ((substring && strindex (p->command, word)) || (STREQN (p->command, word, wl))) ! if (job != NO_JOB) ! { ! builtin_error ("ambigious job spec: %s", word); ! return (DUP_JOB); ! } ! else ! job = i; p = p->next; --- 516,530 ---- do { ! if ((substring_search && strindex (p->command, word)) || (STREQN (p->command, word, wl))) ! { ! if (job != NO_JOB) ! { ! builtin_error ("ambigious job spec: %s", word); ! return (DUP_JOB); ! } ! else ! job = i; ! } p = p->next; *************** *** 659,682 **** /* Return the pointer to the function implementing builtin command NAME. */ ! Function * find_shell_builtin (name) char *name; { current_builtin = builtin_address_internal (name, 0); ! return (current_builtin ? current_builtin->function : (Function *)NULL); } /* Return the address of builtin with NAME, whether it is enabled or not. */ ! Function * builtin_address (name) char *name; { current_builtin = builtin_address_internal (name, 1); ! return (current_builtin ? current_builtin->function : (Function *)NULL); } /* Return the function implementing the builtin NAME, but only if it is a POSIX.2 special builtin. */ ! Function * find_special_builtin (name) char *name; --- 678,701 ---- /* Return the pointer to the function implementing builtin command NAME. */ ! sh_builtin_func_t * find_shell_builtin (name) char *name; { current_builtin = builtin_address_internal (name, 0); ! return (current_builtin ? current_builtin->function : (sh_builtin_func_t *)NULL); } /* Return the address of builtin with NAME, whether it is enabled or not. */ ! sh_builtin_func_t * builtin_address (name) char *name; { current_builtin = builtin_address_internal (name, 1); ! return (current_builtin ? current_builtin->function : (sh_builtin_func_t *)NULL); } /* Return the function implementing the builtin NAME, but only if it is a POSIX.2 special builtin. */ ! sh_builtin_func_t * find_special_builtin (name) char *name; *************** *** 685,689 **** return ((current_builtin && (current_builtin->flags & SPECIAL_BUILTIN)) ? current_builtin->function : ! (Function *)NULL); } --- 704,708 ---- return ((current_builtin && (current_builtin->flags & SPECIAL_BUILTIN)) ? current_builtin->function : ! (sh_builtin_func_t *)NULL); } diff -Nrc2 bash-2.05/builtins/common.h bash-2.05a/builtins/common.h *** bash-2.05/builtins/common.h Fri Oct 13 11:52:55 2000 --- bash-2.05a/builtins/common.h Wed Sep 12 10:01:40 2001 *************** *** 32,36 **** /* Functions from common.c */ ! extern void builtin_error __P((const char *, ...)); extern void builtin_usage __P((void)); extern void no_args __P((WORD_LIST *)); --- 32,36 ---- /* Functions from common.c */ ! extern void builtin_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); extern void builtin_usage __P((void)); extern void no_args __P((WORD_LIST *)); *************** *** 50,54 **** extern void set_dollar_vars_changed __P((void)); ! extern int get_numeric_arg __P((WORD_LIST *, int)); extern int read_octal __P((char *)); --- 50,55 ---- extern void set_dollar_vars_changed __P((void)); ! extern long get_numeric_arg __P((WORD_LIST *, int)); ! extern int get_exitstat __P((WORD_LIST *)); extern int read_octal __P((char *)); *************** *** 66,81 **** providing a definition of what a `Function' is. */ extern struct builtin *builtin_address_internal __P((char *, int)); ! extern Function *find_shell_builtin __P((char *)); ! extern Function *builtin_address __P((char *)); ! extern Function *find_special_builtin __P((char *)); extern void initialize_shell_builtins __P((void)); /* Functions from set.def */ ! extern void initialize_shell_options __P((int)); extern void list_minus_o_opts __P((int, int)); extern int set_minus_o_option __P((int, char *)); ! extern int minus_o_option_value __P((char *)); extern void reset_shell_options __P((void)); - extern char **get_minus_o_opts __P((void)); /* Functions from shopt.def */ --- 67,89 ---- providing a definition of what a `Function' is. */ extern struct builtin *builtin_address_internal __P((char *, int)); ! extern sh_builtin_func_t *find_shell_builtin __P((char *)); ! extern sh_builtin_func_t *builtin_address __P((char *)); ! extern sh_builtin_func_t *find_special_builtin __P((char *)); extern void initialize_shell_builtins __P((void)); + /* Functions from getopts.def */ + extern void getopts_reset __P((int)); + /* Functions from set.def */ ! extern int minus_o_option_value __P((char *)); extern void list_minus_o_opts __P((int, int)); + extern char **get_minus_o_opts __P((void)); extern int set_minus_o_option __P((int, char *)); ! ! extern void set_shellopts __P((void)); ! extern void parse_shellopts __P((char *)); ! extern void initialize_shell_options __P((int)); ! extern void reset_shell_options __P((void)); /* Functions from shopt.def */ *************** *** 83,86 **** --- 91,99 ---- extern char **get_shopt_options __P((void)); + extern int shopt_setopt __P((char *, int)); + extern int shopt_listopt __P((char *, int)); + + extern int set_login_shell __P((int)); + /* Functions from type.def */ extern int describe_command __P((char *, int, int)); *************** *** 94,109 **** /* Functions from pushd.def */ extern char *get_dirstack_from_string __P((char *)); ! extern char *get_dirstack_element __P((int, int)); ! extern void set_dirstack_element __P((int, int, char *)); extern WORD_LIST *get_directory_stack __P((void)); /* Functions from evalstring.c */ ! extern int parse_and_execute __P((char *, char *, int)); extern void parse_and_execute_cleanup __P((void)); /* Functions from evalfile.c */ ! extern int maybe_execute_file __P((char *, int)); ! extern int source_file __P((char *)); ! extern int fc_execute_file __P((char *)); #endif /* !__COMMON_H */ --- 107,122 ---- /* Functions from pushd.def */ extern char *get_dirstack_from_string __P((char *)); ! extern char *get_dirstack_element __P((long, int)); ! extern void set_dirstack_element __P((long, int, char *)); extern WORD_LIST *get_directory_stack __P((void)); /* Functions from evalstring.c */ ! extern int parse_and_execute __P((char *, const char *, int)); extern void parse_and_execute_cleanup __P((void)); /* Functions from evalfile.c */ ! extern int maybe_execute_file __P((const char *, int)); ! extern int source_file __P((const char *)); ! extern int fc_execute_file __P((const char *)); #endif /* !__COMMON_H */ diff -Nrc2 bash-2.05/builtins/complete.def bash-2.05a/builtins/complete.def *** bash-2.05/builtins/complete.def Wed Feb 14 17:07:54 2001 --- bash-2.05a/builtins/complete.def Wed Jul 25 15:23:35 2001 *************** *** 25,29 **** $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION complete_builtin ! $SHORT_DOC complete [-abcdefjkvu] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...] For each NAME, specify how arguments are to be completed. If the -p option is supplied, or if no options are supplied, existing --- 25,29 ---- $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION complete_builtin ! $SHORT_DOC complete [-abcdefgjkvu] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...] For each NAME, specify how arguments are to be completed. If the -p option is supplied, or if no options are supplied, existing *************** *** 52,61 **** #include "bashgetopt.h" #define STRDUP(x) ((x) ? savestring (x) : (char *)NULL) ! static int remove_cmd_completions (); ! static void print_all_completions (); ! static int print_cmd_completions (); static char *Aarg, *Garg, *Warg, *Parg, *Sarg, *Xarg, *Farg, *Carg; --- 52,69 ---- #include "bashgetopt.h" + #include + #define STRDUP(x) ((x) ? savestring (x) : (char *)NULL) ! static int find_compact __P((char *)); ! static int find_compopt __P((char *)); ! ! static int build_actions __P((WORD_LIST *, int *, int *, unsigned long *, unsigned long *)); ! ! static int remove_cmd_completions __P((WORD_LIST *)); ! static void print_one_completion __P((char *, COMPSPEC *)); ! static void print_all_completions __P((void)); ! static int print_cmd_completions __P((WORD_LIST *)); static char *Aarg, *Garg, *Warg, *Parg, *Sarg, *Xarg, *Farg, *Carg; *************** *** 79,82 **** --- 87,91 ---- { "helptopic", CA_BUILTIN, 0 }, /* for now */ { "hostname", CA_HOSTNAME, 0 }, + { "group", CA_GROUP, 'g' }, { "job", CA_JOB, 'j' }, { "keyword", CA_KEYWORD, 'k' }, *************** *** 145,149 **** unsigned long *actp, *optp; { ! int opt, ind, pflag, rflag, opt_given; unsigned long acts, copts; --- 154,158 ---- unsigned long *actp, *optp; { ! int opt, ind, opt_given; unsigned long acts, copts; *************** *** 152,156 **** reset_internal_getopt (); ! while ((opt = internal_getopt (list, "abcdefjko:pruvA:G:W:P:S:X:F:C:")) != -1) { opt_given = 1; --- 161,165 ---- reset_internal_getopt (); ! while ((opt = internal_getopt (list, "abcdefgjko:pruvA:G:W:P:S:X:F:C:")) != -1) { opt_given = 1; *************** *** 201,204 **** --- 210,216 ---- acts |= CA_FILE; break; + case 'g': + acts |= CA_GROUP; + break; case 'j': acts |= CA_JOB; *************** *** 425,428 **** --- 437,441 ---- PRINTOPT (CA_EXPORT, "-e"); PRINTOPT (CA_FILE, "-f"); + PRINTOPT (CA_GROUP, "-g"); PRINTOPT (CA_KEYWORD, "-k"); PRINTOPT (CA_JOB, "-j"); *************** *** 491,495 **** $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION compgen_builtin ! $SHORT_DOC compgen [-abcdefjkvu] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [word] Display the possible completions depending on the options. Intended to be used from within a shell function generating possible completions. --- 504,508 ---- $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION compgen_builtin ! $SHORT_DOC compgen [-abcdefgjkvu] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [word] Display the possible completions depending on the options. Intended to be used from within a shell function generating possible completions. *************** *** 548,554 **** rval = EXECUTION_FAILURE; sl = gen_compspec_completions (cs, "compgen", word, 0, 0); if (sl) { ! if (sl->list) { rval = EXECUTION_SUCCESS; --- 561,579 ---- rval = EXECUTION_FAILURE; sl = gen_compspec_completions (cs, "compgen", word, 0, 0); + + /* This isn't perfect, but it's the best we can do, given what readline + exports from its set of completion utility functions. */ + if ((sl == 0 || sl->list_len == 0) && (copts & COPT_DEFAULT)) + { + char **matches; + + matches = rl_completion_matches (word, rl_filename_completion_function); + sl = completions_to_stringlist (matches); + free_array (matches); + } + if (sl) { ! if (sl->list && sl->list_len) { rval = EXECUTION_SUCCESS; diff -Nrc2 bash-2.05/builtins/declare.def bash-2.05a/builtins/declare.def *** bash-2.05/builtins/declare.def Wed Feb 14 17:08:37 2001 --- bash-2.05a/builtins/declare.def Tue Sep 11 15:32:08 2001 *************** *** 72,78 **** #include "builtext.h" ! extern int variable_context, array_needs_making; ! static int declare_internal (); /* Declare or change variable attributes. */ --- 72,78 ---- #include "builtext.h" ! extern int array_needs_making; ! static int declare_internal __P((register WORD_LIST *, int)); /* Declare or change variable attributes. */ *************** *** 111,115 **** { int flags_on, flags_off, *flags, any_failed, assign_error, pflag, nodefs; ! char *t; SHELL_VAR *var; --- 111,115 ---- { int flags_on, flags_off, *flags, any_failed, assign_error, pflag, nodefs; ! char *t, *subscript_start; SHELL_VAR *var; *************** *** 216,220 **** int offset; #if defined (ARRAY_VARS) ! int making_array_special, assigning_array_special; #endif --- 216,220 ---- int offset; #if defined (ARRAY_VARS) ! int making_array_special, compound_array_assign, simple_array_assign; #endif *************** *** 231,237 **** #if defined (ARRAY_VARS) ! assigning_array_special = 0; ! if (t = strchr (name, '[')) { *t = '\0'; making_array_special = 1; --- 231,239 ---- #if defined (ARRAY_VARS) ! compound_array_assign = simple_array_assign = 0; ! subscript_start = (char *)NULL; ! if (t = strchr (name, '[')) /* ] */ { + subscript_start = t; *t = '\0'; making_array_special = 1; *************** *** 345,360 **** #if defined (ARRAY_VARS) - /* declare -a name=value does not work; declare name=value when - name is already an array does not work. */ if ((making_array_special || (flags_on & att_array) || array_p (var)) && offset) { if (value[0] == '(' && strchr (value, ')')) ! assigning_array_special = 1; else ! { ! builtin_error ("%s: cannot assign to array variables in this way", name); ! assign_error++; ! NEXT_VARIABLE (); ! } } --- 347,356 ---- #if defined (ARRAY_VARS) if ((making_array_special || (flags_on & att_array) || array_p (var)) && offset) { if (value[0] == '(' && strchr (value, ')')) ! compound_array_assign = 1; else ! simple_array_assign = 1; } *************** *** 376,381 **** #if defined (ARRAY_VARS) ! if (offset && assigning_array_special) assign_array_var_from_string (var, value); else #endif --- 372,387 ---- #if defined (ARRAY_VARS) ! if (offset && compound_array_assign) assign_array_var_from_string (var, value); + else if (simple_array_assign && subscript_start) + { + /* declare [-a] name[N]=value */ + *subscript_start = '['; /* ] */ + var = assign_array_element (name, value); + *subscript_start = '\0'; + } + else if (simple_array_assign) + /* let bind_array_variable take care of this. */ + bind_array_variable (name, 0, value); else #endif diff -Nrc2 bash-2.05/builtins/enable.def bash-2.05a/builtins/enable.def *** bash-2.05/builtins/enable.def Wed Feb 14 17:09:05 2001 --- bash-2.05a/builtins/enable.def Tue Aug 28 13:04:44 2001 *************** *** 61,72 **** #endif - #if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) - static int dyn_load_builtin (); - #endif - - #if defined (HAVE_DLCLOSE) - static int dyn_unload_builtin (); - #endif - #define ENABLED 1 #define DISABLED 2 --- 61,64 ---- *************** *** 80,85 **** #define SFLAG 0x20 ! static int enable_shell_command (); ! static void list_some_builtins (); /* Enable/disable shell commands present in LIST. If list is not specified, --- 72,87 ---- #define SFLAG 0x20 ! #if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) ! static int dyn_load_builtin __P((WORD_LIST *, int, char *)); ! #endif ! ! #if defined (HAVE_DLCLOSE) ! static int dyn_unload_builtin __P((char *)); ! static void delete_builtin __P((struct builtin *)); ! static int local_dlclose __P((void *)); ! #endif ! ! static void list_some_builtins __P((int)); ! static int enable_shell_command __P((char *, int)); /* Enable/disable shell commands present in LIST. If list is not specified, *************** *** 306,310 **** size = strlen (name); ! struct_name = xmalloc (size + 8); strcpy (struct_name, name); strcpy (struct_name + size, "_struct"); --- 308,312 ---- size = strlen (name); ! struct_name = (char *)xmalloc (size + 8); strcpy (struct_name, name); strcpy (struct_name + size, "_struct"); *************** *** 356,360 **** new_shell_builtins[total].name = (char *)0; ! new_shell_builtins[total].function = (Function *)0; new_shell_builtins[total].flags = 0; --- 358,362 ---- new_shell_builtins[total].name = (char *)0; ! new_shell_builtins[total].function = (sh_builtin_func_t *)0; new_shell_builtins[total].flags = 0; *************** *** 428,432 **** void *handle; int ref, i; - char *uerror; b = builtin_address_internal (name, 1); --- 430,433 ---- diff -Nrc2 bash-2.05/builtins/evalfile.c bash-2.05a/builtins/evalfile.c *** bash-2.05/builtins/evalfile.c Wed Feb 14 17:05:16 2001 --- bash-2.05a/builtins/evalfile.c Mon Oct 29 13:45:50 2001 *************** *** 58,63 **** #define FEVAL_HISTORY 0x020 #define FEVAL_CHECKBINARY 0x040 ! extern int interactive, interactive_shell, posixly_correct; extern int indirection_level, startup_state, subshell_environment; extern int return_catch_flag, return_catch_value; --- 58,64 ---- #define FEVAL_HISTORY 0x020 #define FEVAL_CHECKBINARY 0x040 + #define FEVAL_REGFILE 0x080 ! extern int posixly_correct; extern int indirection_level, startup_state, subshell_environment; extern int return_catch_flag, return_catch_value; *************** *** 69,73 **** static int _evalfile (filename, flags) ! char *filename; int flags; { --- 70,74 ---- static int _evalfile (filename, flags) ! const char *filename; int flags; { *************** *** 78,82 **** struct stat finfo; size_t file_size; ! VFunction *errfunc; fd = open (filename, O_RDONLY); --- 79,85 ---- struct stat finfo; size_t file_size; ! sh_vmsg_func_t *errfunc; ! ! USE_VAR(pflags); fd = open (filename, O_RDONLY); *************** *** 98,102 **** } ! errfunc = (VFunction *)((flags & FEVAL_BUILTIN) ? builtin_error : internal_error); if (S_ISDIR (finfo.st_mode)) --- 101,105 ---- } ! errfunc = ((flags & FEVAL_BUILTIN) ? builtin_error : internal_error); if (S_ISDIR (finfo.st_mode)) *************** *** 105,109 **** return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); } ! else if (S_ISREG (finfo.st_mode) == 0) { (*errfunc) ("%s: not a regular file", filename); --- 108,112 ---- return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); } ! else if ((flags & FEVAL_REGFILE) && S_ISREG (finfo.st_mode) == 0) { (*errfunc) ("%s: not a regular file", filename); *************** *** 123,127 **** #endif ! string = xmalloc (1 + file_size); result = read (fd, string, file_size); string[result] = '\0'; --- 126,130 ---- #endif ! string = (char *)xmalloc (1 + file_size); result = read (fd, string, file_size); string[result] = '\0'; *************** *** 144,148 **** if ((flags & FEVAL_CHECKBINARY) && ! check_binary_file ((unsigned char *)string, (result > 80) ? 80 : result)) { free (string); --- 147,151 ---- if ((flags & FEVAL_CHECKBINARY) && ! check_binary_file (string, (result > 80) ? 80 : result)) { free (string); *************** *** 208,212 **** int maybe_execute_file (fname, force_noninteractive) ! char *fname; int force_noninteractive; { --- 211,215 ---- int maybe_execute_file (fname, force_noninteractive) ! const char *fname; int force_noninteractive; { *************** *** 226,230 **** int fc_execute_file (filename) ! char *filename; { int flags; --- 229,233 ---- int fc_execute_file (filename) ! const char *filename; { int flags; *************** *** 232,236 **** /* We want these commands to show up in the history list if remember_on_history is set. */ ! flags = FEVAL_ENOENTOK|FEVAL_HISTORY; return (_evalfile (filename, flags)); } --- 235,239 ---- /* We want these commands to show up in the history list if remember_on_history is set. */ ! flags = FEVAL_ENOENTOK|FEVAL_HISTORY|FEVAL_REGFILE; return (_evalfile (filename, flags)); } *************** *** 239,243 **** int source_file (filename) ! char *filename; { int flags; --- 242,246 ---- int source_file (filename) ! const char *filename; { int flags; diff -Nrc2 bash-2.05/builtins/evalstring.c bash-2.05a/builtins/evalstring.c *** bash-2.05/builtins/evalstring.c Wed Feb 14 17:05:23 2001 --- bash-2.05a/builtins/evalstring.c Tue Sep 11 16:24:42 2001 *************** *** 41,44 **** --- 41,45 ---- #include "../execute_cmd.h" #include "../redir.h" + #include "../trap.h" #if defined (HISTORY) *************** *** 54,61 **** #define IS_BUILTIN(s) (builtin_address_internal(s, 0) != (struct builtin *)NULL) - extern void run_trap_cleanup (); - extern int zwrite (); - - extern int interactive, interactive_shell; extern int indirection_level, startup_state, subshell_environment; extern int line_number; --- 55,58 ---- *************** *** 63,71 **** extern int running_trap; extern int posixly_correct; - extern COMMAND *global_command; int parse_and_execute_level = 0; ! static int cat_file (); /* How to force parse_and_execute () to clean up after itself. */ --- 60,67 ---- extern int running_trap; extern int posixly_correct; int parse_and_execute_level = 0; ! static int cat_file __P((REDIRECT *)); /* How to force parse_and_execute () to clean up after itself. */ *************** *** 93,97 **** parse_and_execute (string, from_file, flags) char *string; ! char *from_file; int flags; { --- 89,93 ---- parse_and_execute (string, from_file, flags) char *string; ! const char *from_file; int flags; { *************** *** 298,302 **** { char lbuf[128], *fn; ! int nr, fd, rval; if (r->instruction != r_input_direction) --- 294,299 ---- { char lbuf[128], *fn; ! int fd, rval; ! ssize_t nr; if (r->instruction != r_input_direction) *************** *** 345,348 **** close (fd); ! return (0); } --- 342,345 ---- close (fd); ! return (rval); } diff -Nrc2 bash-2.05/builtins/exec.def bash-2.05a/builtins/exec.def *** bash-2.05/builtins/exec.def Mon Mar 26 13:07:57 2001 --- bash-2.05a/builtins/exec.def Tue Sep 11 15:35:10 2001 *************** *** 67,71 **** #endif /* !errno */ ! extern int interactive, interactive_shell, subshell_environment; extern REDIRECT *redirection_undo_list; --- 67,71 ---- #endif /* !errno */ ! extern int subshell_environment; extern REDIRECT *redirection_undo_list; *************** *** 80,84 **** char *ret; ! ret = xmalloc (2 + strlen (name)); ret[0] = '-'; strcpy (ret + 1, name); --- 80,84 ---- char *ret; ! ret = (char *)xmalloc (2 + strlen (name)); ret[0] = '-'; strcpy (ret + 1, name); diff -Nrc2 bash-2.05/builtins/exit.def bash-2.05a/builtins/exit.def *** bash-2.05/builtins/exit.def Thu Aug 5 07:42:05 1999 --- bash-2.05a/builtins/exit.def Tue Sep 11 15:36:18 2001 *************** *** 44,53 **** #include "builtext.h" /* for jobs_builtin */ - extern int interactive, login_shell; extern int last_command_exit_value; ! extern Function *this_shell_builtin; ! extern Function *last_shell_builtin; ! static int exit_or_logout (); static int sourced_logout; --- 44,53 ---- #include "builtext.h" /* for jobs_builtin */ extern int last_command_exit_value; ! extern int subshell_environment; ! extern sh_builtin_func_t *this_shell_builtin; ! extern sh_builtin_func_t *last_shell_builtin; ! static int exit_or_logout __P((WORD_LIST *)); static int sourced_logout; *************** *** 120,127 **** /* Get return value if present. This means that you can type `logout 5' to a shell, and it returns 5. */ ! exit_value = list ? get_numeric_arg (list, 1) : last_command_exit_value; /* Run our `~/.bash_logout' file if it exists, and this is a login shell. */ ! if (login_shell && sourced_logout++ == 0) { maybe_execute_file ("~/.bash_logout", 1); --- 120,127 ---- /* Get return value if present. This means that you can type `logout 5' to a shell, and it returns 5. */ ! exit_value = list ? get_exitstat (list) : last_command_exit_value; /* Run our `~/.bash_logout' file if it exists, and this is a login shell. */ ! if (login_shell && sourced_logout++ == 0 && subshell_environment == 0) { maybe_execute_file ("~/.bash_logout", 1); diff -Nrc2 bash-2.05/builtins/fc.def bash-2.05a/builtins/fc.def *** bash-2.05/builtins/fc.def Wed Jan 17 11:51:50 2001 --- bash-2.05a/builtins/fc.def Wed Sep 12 11:57:25 2001 *************** *** 64,67 **** --- 64,68 ---- #include + #include #include "../bashansi.h" *************** *** 85,89 **** extern int literal_history; ! extern int unlink (); extern FILE *sh_mktmpfp __P((char *, int, char **)); --- 86,90 ---- extern int literal_history; ! extern int unlink __P((const char *)); extern FILE *sh_mktmpfp __P((char *, int, char **)); *************** *** 118,125 **** */ - static char *fc_dosubs (), *fc_gethist (), *fc_readline (); - static int fc_gethnum (), fc_number (); - static void fc_replhist (), fc_addhist (); - /* Data structure describing a list of global replacements to perform. */ typedef struct repl { --- 119,122 ---- *************** *** 147,150 **** --- 144,157 ---- } while (0) + static char *fc_dosubs __P((char *, REPL *)); + static char *fc_gethist __P((char *, HIST_ENTRY **)); + static int fc_gethnum __P((char *, HIST_ENTRY **)); + static int fc_number __P((WORD_LIST *)); + static void fc_replhist __P((char *)); + #ifdef INCLUDE_UNUSED + static char *fc_readline __P((FILE *)); + static void fc_addhist __P((char *)); + #endif + /* String to execute on a file that we want to edit. */ #define FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-vi}}" *************** *** 160,164 **** FILE *stream; REPL *rlist, *rl; ! char *ename, *command, *newcom, *line; HIST_ENTRY **hlist; char *fn; --- 167,171 ---- FILE *stream; REPL *rlist, *rl; ! char *ename, *command, *newcom; HIST_ENTRY **hlist; char *fn; *************** *** 446,450 **** } ! if (s && digit(*s)) { n = atoi (s); --- 453,457 ---- } ! if (s && DIGIT(*s)) { n = atoi (s); *************** *** 495,498 **** --- 502,506 ---- } + #ifdef INCLUDE_UNUSED /* Read the edited history lines from STREAM and return them one at a time. This can read unlimited length lines. The *************** *** 509,513 **** { if ((lindex + 2) >= line_len) ! line = (char *) xrealloc (line, (line_len += 128)); if (c == '\n') --- 517,521 ---- { if ((lindex + 2) >= line_len) ! line = (char *)xrealloc (line, (line_len += 128)); if (c == '\n') *************** *** 536,539 **** --- 544,548 ---- return (line); } + #endif /* Perform the SUBS on COMMAND. *************** *** 605,608 **** --- 614,618 ---- } + #ifdef INCLUDE_UNUSED /* Add LINE to the history, after removing a single trailing newline. */ static void *************** *** 620,622 **** --- 630,634 ---- maybe_add_history (line); } + #endif + #endif /* HISTORY */ diff -Nrc2 bash-2.05/builtins/fg_bg.def bash-2.05a/builtins/fg_bg.def *** bash-2.05/builtins/fg_bg.def Thu Aug 5 07:42:21 1999 --- bash-2.05a/builtins/fg_bg.def Mon May 14 11:52:47 2001 *************** *** 47,51 **** extern char *this_command_name; ! static int fg_bg (); /* How to bring a job into the foreground. */ --- 47,51 ---- extern char *this_command_name; ! static int fg_bg __P((WORD_LIST *, int)); /* How to bring a job into the foreground. */ diff -Nrc2 bash-2.05/builtins/getopt.h bash-2.05a/builtins/getopt.h *** bash-2.05/builtins/getopt.h Thu Aug 5 07:32:48 1999 --- bash-2.05a/builtins/getopt.h Mon Sep 10 14:12:49 2001 *************** *** 21,24 **** --- 21,26 ---- #define _SH_GETOPT_H 1 + #include "stdc.h" + /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, *************** *** 55,60 **** extern int sh_badopt; ! extern int sh_getopt (); ! extern void sh_getopt_restore_state (); #endif /* _SH_GETOPT_H */ --- 57,62 ---- extern int sh_badopt; ! extern int sh_getopt __P((int, char *const *, const char *)); ! extern void sh_getopt_restore_state __P((char **)); #endif /* _SH_GETOPT_H */ diff -Nrc2 bash-2.05/builtins/getopts.def bash-2.05a/builtins/getopts.def *** bash-2.05/builtins/getopts.def Wed Feb 14 17:09:23 2001 --- bash-2.05a/builtins/getopts.def Tue Sep 11 15:46:40 2001 *************** *** 80,84 **** extern char *this_command_name; - extern WORD_LIST *rest_of_args; /* getopts_reset is magic code for when OPTIND is reset. N is the --- 80,83 ---- *************** *** 305,316 **** reset_internal_getopt (); ! while ((ret = internal_getopt (list, "")) != -1) { ! switch (ret) ! { ! default: ! builtin_usage (); ! return (EX_USAGE); ! } } list = loptend; --- 304,311 ---- reset_internal_getopt (); ! if (internal_getopt (list, "") != -1) { ! builtin_usage (); ! return (EX_USAGE); } list = loptend; diff -Nrc2 bash-2.05/builtins/hash.def bash-2.05a/builtins/hash.def *** bash-2.05/builtins/hash.def Thu Oct 19 13:13:16 2000 --- bash-2.05a/builtins/hash.def Wed May 9 12:00:35 2001 *************** *** 24,33 **** $BUILTIN hash $FUNCTION hash_builtin ! $SHORT_DOC hash [-r] [-p pathname] [name ...] For each NAME, the full pathname of the command is determined and remembered. If the -p option is supplied, PATHNAME is used as the full pathname of NAME, and no path search is performed. The -r ! option causes the shell to forget all remembered locations. If no ! arguments are given, information about remembered commands is displayed. $END --- 24,36 ---- $BUILTIN hash $FUNCTION hash_builtin ! $SHORT_DOC hash [-r] [-p pathname] [-t] [name ...] For each NAME, the full pathname of the command is determined and remembered. If the -p option is supplied, PATHNAME is used as the full pathname of NAME, and no path search is performed. The -r ! option causes the shell to forget all remembered locations. ! If the -t option is supplied the full pathname to which each NAME ! corresponds is printed. If multiple NAME arguments are supplied with ! -t, the NAME is printed before the hashed full pathname. If no arguments ! are given, information about remembered commands is displayed. $END *************** *** 57,62 **** extern char *this_command_name; ! static int add_hashed_command (); ! static int print_hashed_commands (); /* Print statistics on the current state of hashed commands. If LIST is --- 60,66 ---- extern char *this_command_name; ! static int add_hashed_command __P((char *, int)); ! static int print_hashed_commands __P((void)); ! static int list_hashed_filename_targets __P((WORD_LIST *)); /* Print statistics on the current state of hashed commands. If LIST is *************** *** 67,71 **** WORD_LIST *list; { ! int expunge_hash_table, opt; char *w, *pathname; --- 71,75 ---- WORD_LIST *list; { ! int expunge_hash_table, list_targets, opt; char *w, *pathname; *************** *** 76,83 **** } ! expunge_hash_table = 0; pathname = (char *)NULL; reset_internal_getopt (); ! while ((opt = internal_getopt (list, "rp:")) != -1) { switch (opt) --- 80,87 ---- } ! expunge_hash_table = list_targets = 0; pathname = (char *)NULL; reset_internal_getopt (); ! while ((opt = internal_getopt (list, "rp:t")) != -1) { switch (opt) *************** *** 89,92 **** --- 93,99 ---- pathname = list_optarg; break; + case 't': + list_targets = 1; + break; default: builtin_usage (); *************** *** 96,99 **** --- 103,113 ---- list = loptend; + /* hash -t requires at least one argument. */ + if (list == 0 && list_targets) + { + builtin_error("-t: argument required"); + return (EXECUTION_FAILURE); + } + /* We want hash -r to be silent, but hash -- to print hashing info. That is the reason for the test of expunge_hash_table. */ *************** *** 109,112 **** --- 123,132 ---- flush_hashed_filenames (); + /* If someone runs `hash -r -t xyz' he will be disappointed. */ + if (list_targets) + { + return (list_hashed_filename_targets (list)); + } + #if defined (RESTRICTED_SHELL) if (restricted && pathname && strchr (pathname, '/')) *************** *** 198,200 **** --- 218,248 ---- } return (any_printed); + } + + static int + list_hashed_filename_targets (list) + WORD_LIST *list; + { + int all_found, multiple; + char *target; + WORD_LIST *l; + + all_found = 1; + multiple = list->next != 0; + + for (l = list; l; l = l->next) + { + target = find_hashed_filename (l->word->word); + if (target == 0) + { + all_found = 0; + builtin_error ("%s: not found", l->word->word); + continue; + } + if (multiple) + printf ("%s\t", l->word->word); + printf ("%s\n", target); + } + + return (all_found ? EXECUTION_SUCCESS : EXECUTION_FAILURE); } diff -Nrc2 bash-2.05/builtins/help.def bash-2.05a/builtins/help.def *** bash-2.05/builtins/help.def Thu Aug 5 07:42:44 1999 --- bash-2.05a/builtins/help.def Mon Sep 10 09:54:50 2001 *************** *** 48,60 **** #include "../builtins.h" #include "../pathexp.h" #include "bashgetopt.h" ! #include #include ! extern void builtin_error (); ! extern void builtin_usage (); ! ! static void show_builtin_command_help (); /* Print out a list of the known functions in the shell, and what they do. --- 48,58 ---- #include "../builtins.h" #include "../pathexp.h" + #include "common.h" #include "bashgetopt.h" ! #include #include ! static void show_builtin_command_help __P((void)); /* Print out a list of the known functions in the shell, and what they do. *************** *** 110,114 **** QUIT; if ((strncmp (pattern, name, plen) == 0) || ! (fnmatch (pattern, name, FNMATCH_EXTFLAG) != FNM_NOMATCH)) { printf ("%s: %s\n", name, shell_builtins[i].short_doc); --- 108,112 ---- QUIT; if ((strncmp (pattern, name, plen) == 0) || ! (strmatch (pattern, name, FNMATCH_EXTFLAG) != FNM_NOMATCH)) { printf ("%s: %s\n", name, shell_builtins[i].short_doc); diff -Nrc2 bash-2.05/builtins/history.def bash-2.05a/builtins/history.def *** bash-2.05/builtins/history.def Wed Feb 14 17:09:42 2001 --- bash-2.05a/builtins/history.def Mon May 21 15:32:57 2001 *************** *** 71,78 **** #endif ! static void display_history (); ! static void push_history (); ! static int expand_and_print_history (); ! static int delete_histent (); #define AFLAG 0x01 --- 71,79 ---- #endif ! static void display_history __P((WORD_LIST *)); ! static int delete_histent __P((int)); ! static int delete_last_history __P((void)); ! static void push_history __P((WORD_LIST *)); ! static int expand_and_print_history __P((WORD_LIST *)); #define AFLAG 0x01 *************** *** 164,168 **** else if (flags & DFLAG) { ! if (legal_number (delete_arg, &delete_offset) == 0) { builtin_error ("%s: not a valid history position", delete_arg); --- 165,171 ---- else if (flags & DFLAG) { ! if ((legal_number (delete_arg, &delete_offset) == 0) ! || (delete_offset < history_base) ! || (delete_offset > (history_base + history_length))) { builtin_error ("%s: not a valid history position", delete_arg); *************** *** 170,178 **** } opt = delete_offset; - if (opt < history_base || opt < 0 || opt > (history_base + history_length)) - { - builtin_error ("%d: not a valid history position", opt); - return (EXECUTION_FAILURE); - } result = delete_histent (opt - history_base); /* Since remove_history changes history_length, this can happen if --- 173,176 ---- *************** *** 218,231 **** { register int i; ! int limited, limit; HIST_ENTRY **hlist; if (list) { - limited = 1; limit = get_numeric_arg (list, 0); } else ! limited = limit = 0; hlist = history_list (); --- 216,230 ---- { register int i; ! long limit; HIST_ENTRY **hlist; if (list) { limit = get_numeric_arg (list, 0); + if (limit < 0) + limit = -limit; } else ! limit = -1; hlist = history_list (); *************** *** 236,243 **** ; ! if (limit < 0) ! limit = -limit; ! ! if ((limited == 0) || ((i -= limit) < 0)) i = 0; --- 235,241 ---- ; ! if (0 <= limit && limit < i) ! i -= limit; ! else i = 0; diff -Nrc2 bash-2.05/builtins/jobs.def bash-2.05a/builtins/jobs.def *** bash-2.05/builtins/jobs.def Thu Aug 5 07:43:05 1999 --- bash-2.05a/builtins/jobs.def Tue Sep 11 15:38:49 2001 *************** *** 58,63 **** #define JSTATE_STOPPED 0x2 ! extern int job_control, interactive_shell; ! static int execute_list_with_replacements (); /* The `jobs' command. Prints outs a list of active jobs. If the --- 58,62 ---- #define JSTATE_STOPPED 0x2 ! static int execute_list_with_replacements __P((WORD_LIST *)); /* The `jobs' command. Prints outs a list of active jobs. If the *************** *** 221,224 **** --- 220,224 ---- int opt, job, retval, nohup_only, running_jobs, all_jobs; sigset_t set, oset; + long pid_value; nohup_only = running_jobs = all_jobs = 0; *************** *** 258,263 **** { BLOCK_CHILD (set, oset); ! job = (list && all_digits(list->word->word)) ! ? get_job_by_pid (atoi(list->word->word), 0) : get_job_spec (list); --- 258,263 ---- { BLOCK_CHILD (set, oset); ! job = (list && legal_number (list->word->word, &pid_value) && pid_value == (pid_t) pid_value) ! ? get_job_by_pid ((pid_t) pid_value, 0) : get_job_spec (list); diff -Nrc2 bash-2.05/builtins/kill.def bash-2.05a/builtins/kill.def *** bash-2.05/builtins/kill.def Thu Aug 5 07:43:12 1999 --- bash-2.05a/builtins/kill.def Mon Oct 15 13:23:32 2001 *************** *** 59,64 **** #if defined (JOB_CONTROL) - extern int interactive; - extern int job_control; extern int posixly_correct; --- 59,62 ---- *************** *** 79,82 **** --- 77,81 ---- char *sigspec, *word; pid_t pid; + long pid_value; if (list == 0) *************** *** 165,172 **** word++; ! if (*word && all_digits (word)) { /* Use the entire argument in case of minus sign presence. */ ! pid = (pid_t) atoi (list->word->word); if (kill_pid (pid, signal, 0) < 0) --- 164,171 ---- word++; ! if (*word && legal_number (word, &pid_value) && (pid_value == (pid_t)pid_value)) { /* Use the entire argument in case of minus sign presence. */ ! pid = (pid_t) pid_value; if (kill_pid (pid, signal, 0) < 0) *************** *** 208,217 **** { signal_error: ! if (errno == EPERM) ! builtin_error ("(%d) - Not owner", (int)pid); ! else if (errno == ESRCH) ! builtin_error ("(%d) - No such pid", (int)pid); ! else builtin_error ("Invalid signal %d", signal); CONTINUE_OR_FAIL; } --- 207,214 ---- { signal_error: ! if (errno == EINVAL) builtin_error ("Invalid signal %d", signal); + else + builtin_error ("(%ld) - %s", (long)pid, strerror (errno)); CONTINUE_OR_FAIL; } diff -Nrc2 bash-2.05/builtins/let.def bash-2.05a/builtins/let.def *** bash-2.05/builtins/let.def Thu Aug 5 07:43:19 1999 --- bash-2.05a/builtins/let.def Mon Sep 17 13:51:02 2001 *************** *** 94,98 **** } ! return ((ret == 0L) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); } --- 94,98 ---- } ! return ((ret == 0) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); } *************** *** 114,118 **** ret = evalexp (exp, &expok); (void)free (exp); ! return (((ret == 0L) || (expok == 0)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); } #endif --- 114,118 ---- ret = evalexp (exp, &expok); (void)free (exp); ! return (((ret == 0) || (expok == 0)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); } #endif diff -Nrc2 bash-2.05/builtins/mkbuiltins.c bash-2.05a/builtins/mkbuiltins.c *** bash-2.05/builtins/mkbuiltins.c Wed Feb 14 17:06:45 2001 --- bash-2.05a/builtins/mkbuiltins.c Mon Oct 15 13:24:15 2001 *************** *** 40,43 **** --- 40,45 ---- #include + #include "stdc.h" + #define DOCFILE "builtins.texi" *************** *** 224,228 **** { temp_struct_filename = xmalloc (15); ! sprintf (temp_struct_filename, "mk-%d", (int) getpid ()); structfile = fopen (temp_struct_filename, "w"); --- 226,230 ---- { temp_struct_filename = xmalloc (15); ! sprintf (temp_struct_filename, "mk-%ld", (long) getpid ()); structfile = fopen (temp_struct_filename, "w"); *************** *** 379,393 **** /* The definition of a function. */ typedef int Function (); /* Structure handles processor directives. */ typedef struct { char *directive; ! Function *function; } HANDLER_ENTRY; ! extern int ! builtin_handler (), function_handler (), short_doc_handler (), ! comment_handler (), depends_on_handler (), produces_handler (), ! end_handler (), docname_handler (); HANDLER_ENTRY handlers[] = { --- 381,400 ---- /* The definition of a function. */ typedef int Function (); + typedef int mk_handler_func_t __P((char *, DEF_FILE *, char *)); /* Structure handles processor directives. */ typedef struct { char *directive; ! mk_handler_func_t *function; } HANDLER_ENTRY; ! extern int builtin_handler __P((char *, DEF_FILE *, char *)); ! extern int function_handler __P((char *, DEF_FILE *, char *)); ! extern int short_doc_handler __P((char *, DEF_FILE *, char *)); ! extern int comment_handler __P((char *, DEF_FILE *, char *)); ! extern int depends_on_handler __P((char *, DEF_FILE *, char *)); ! extern int produces_handler __P((char *, DEF_FILE *, char *)); ! extern int end_handler __P((char *, DEF_FILE *, char *)); ! extern int docname_handler __P((char *, DEF_FILE *, char *)); HANDLER_ENTRY handlers[] = { *************** *** 401,405 **** { "PRODUCES", produces_handler }, { "END", end_handler }, ! { (char *)NULL, (Function *)NULL } }; --- 408,412 ---- { "PRODUCES", produces_handler }, { "END", end_handler }, ! { (char *)NULL, (mk_handler_func_t *)NULL } }; *************** *** 725,730 **** int builtin_handler (self, defs, arg) ! char *self, *arg; DEF_FILE *defs; { BUILTIN_DESC *new; --- 732,738 ---- int builtin_handler (self, defs, arg) ! char *self; DEF_FILE *defs; + char *arg; { BUILTIN_DESC *new; *************** *** 770,775 **** int function_handler (self, defs, arg) ! char *self, *arg; DEF_FILE *defs; { register BUILTIN_DESC *builtin; --- 778,784 ---- int function_handler (self, defs, arg) ! char *self; DEF_FILE *defs; + char *arg; { register BUILTIN_DESC *builtin; *************** *** 794,799 **** int docname_handler (self, defs, arg) ! char *self, *arg; DEF_FILE *defs; { register BUILTIN_DESC *builtin; --- 803,809 ---- int docname_handler (self, defs, arg) ! char *self; DEF_FILE *defs; + char *arg; { register BUILTIN_DESC *builtin; *************** *** 813,818 **** int short_doc_handler (self, defs, arg) ! char *self, *arg; DEF_FILE *defs; { register BUILTIN_DESC *builtin; --- 823,829 ---- int short_doc_handler (self, defs, arg) ! char *self; DEF_FILE *defs; + char *arg; { register BUILTIN_DESC *builtin; *************** *** 831,837 **** /* How to handle the $COMMENT directive. */ int ! comment_handler (self, defs) char *self; DEF_FILE *defs; { return (0); --- 842,849 ---- /* How to handle the $COMMENT directive. */ int ! comment_handler (self, defs, arg) char *self; DEF_FILE *defs; + char *arg; { return (0); *************** *** 841,846 **** int depends_on_handler (self, defs, arg) ! char *self, *arg; DEF_FILE *defs; { register BUILTIN_DESC *builtin; --- 853,859 ---- int depends_on_handler (self, defs, arg) ! char *self; DEF_FILE *defs; + char *arg; { register BUILTIN_DESC *builtin; *************** *** 861,866 **** int produces_handler (self, defs, arg) ! char *self, *arg; DEF_FILE *defs; { /* If just hacking documentation, don't change any of the production --- 874,880 ---- int produces_handler (self, defs, arg) ! char *self; DEF_FILE *defs; + char *arg; { /* If just hacking documentation, don't change any of the production *************** *** 894,899 **** int end_handler (self, defs, arg) ! char *self, *arg; DEF_FILE *defs; { must_be_building (self, defs); --- 908,914 ---- int end_handler (self, defs, arg) ! char *self; DEF_FILE *defs; + char *arg; { must_be_building (self, defs); *************** *** 1057,1061 **** " Functions which need to look at only the simple commands (e.g.", " the enable_builtin ()), should ignore entries where", ! " (array[i].function == (Function *)NULL). Such entries are for", " the list of shell reserved control structures, like `if' and `while'.", " The end of the list is denoted with a NULL name field. */", --- 1072,1076 ---- " Functions which need to look at only the simple commands (e.g.", " the enable_builtin ()), should ignore entries where", ! " (array[i].function == (sh_builtin_func_t *)NULL). Such entries are for", " the list of shell reserved control structures, like `if' and `while'.", " The end of the list is denoted with a NULL name field. */", *************** *** 1066,1070 **** char *structfile_footer[] = { ! " { (char *)0x0, (Function *)0x0, 0, (char **)0x0, (char *)0x0 }", "};", "", --- 1081,1085 ---- char *structfile_footer[] = { ! " { (char *)0x0, (sh_builtin_func_t *)0x0, 0, (char **)0x0, (char *)0x0 }", "};", "", *************** *** 1148,1152 **** { if (builtin->function) ! fprintf (externfile, "extern int %s ();\n", builtin->function); --- 1163,1167 ---- { if (builtin->function) ! fprintf (externfile, "extern int %s __P((WORD_LIST *));\n", builtin->function); *************** *** 1163,1167 **** fprintf (structfile, "%s, ", builtin->function); else ! fprintf (structfile, "(Function *)0x0, "); fprintf (structfile, "%s%s%s, %s_doc,\n", --- 1178,1182 ---- fprintf (structfile, "%s, ", builtin->function); else ! fprintf (structfile, "(sh_builtin_func_t *)0x0, "); fprintf (structfile, "%s%s%s, %s_doc,\n", diff -Nrc2 bash-2.05/builtins/printf.def bash-2.05a/builtins/printf.def *** bash-2.05/builtins/printf.def Wed Feb 14 17:09:55 2001 --- bash-2.05a/builtins/printf.def Thu Nov 1 12:37:49 2001 *************** *** 43,49 **** # include #else ! /* Assume 32-bit ints and longs. */ ! # define LONG_MAX 2147483647L ! # define LONG_MIN (-2147483647L-1) # define INT_MAX 2147483647 # define INT_MIN (-2147483647-1) --- 43,47 ---- # include #else ! /* Assume 32-bit ints. */ # define INT_MAX 2147483647 # define INT_MIN (-2147483647-1) *************** *** 51,60 **** #include ! #include #include "../bashansi.h" #include "../shell.h" #include "stdc.h" #include "bashgetopt.h" #if !defined (errno) --- 49,73 ---- #include ! #include ! ! #ifdef HAVE_INTTYPES_H ! # include ! #endif #include "../bashansi.h" + + #define NEED_STRTOIMAX_DECL + #include "../shell.h" #include "stdc.h" #include "bashgetopt.h" + #include "common.h" + + /* This should use the ISO C constant format strings; I'll do that later. */ + #if SIZEOF_LONG < SIZEOF_LONG_LONG + # define INTMAX_CONV "ll" + #else + # define INTMAX_CONV "l" + #endif #if !defined (errno) *************** *** 64,99 **** #define PF(f, func) \ do { \ ! if (fieldwidth && precision) \ ! (void)printf(f, fieldwidth, precision, func); \ ! else if (fieldwidth && precision == 0) \ ! (void)printf(f, fieldwidth, func); \ ! else if (precision) \ ! (void)printf(f, precision, func); \ else \ ! (void)printf(f, func); \ } while (0) #define PRETURN(value) \ ! do { /* free (format); */ fflush (stdout); return (value); } while (0) ! #define SKIP1 "#-+ 0" ! #define SKIP2 "*0123456789" static void printstr __P((char *, char *, int, int, int)); static int tescape __P((char *, int, char *, int *)); static char *bexpand __P((char *, int, int *, int *)); ! static char *mklong __P((char *, int)); static int getchr __P((void)); static char *getstr __P((void)); static int getint __P((void)); ! static int getlong __P((long *)); ! static int getulong __P((unsigned long *)); ! static int getdouble __P((double *)); static int asciicode __P((void)); static WORD_LIST *garglist; static int retval; ! extern char *sh_backslash_quote (); int --- 77,135 ---- #define PF(f, func) \ do { \ ! if (have_fieldwidth && have_precision) \ ! tw += printf(f, fieldwidth, precision, func); \ ! else if (have_fieldwidth) \ ! tw += printf(f, fieldwidth, func); \ ! else if (have_precision) \ ! tw += printf(f, precision, func); \ else \ ! tw += printf(f, func); \ } while (0) + /* We free the buffer used by mklong() if it's `too big'. */ #define PRETURN(value) \ ! do \ ! { \ ! if (conv_bufsize > 4096 ) \ ! { \ ! free(conv_buf); \ ! conv_bufsize = 0; \ ! conv_buf = 0; \ ! } \ ! fflush (stdout); \ ! return (value); \ ! } \ ! while (0) ! #define SKIP1 "#'-+ 0" ! #define LENMODS "hjlLtz" static void printstr __P((char *, char *, int, int, int)); static int tescape __P((char *, int, char *, int *)); static char *bexpand __P((char *, int, int *, int *)); ! static char *mklong __P((char *, char *)); static int getchr __P((void)); static char *getstr __P((void)); static int getint __P((void)); ! static long getlong __P((void)); ! static unsigned long getulong __P((void)); ! #if defined (HAVE_LONG_LONG) ! static long long getllong __P((void)); ! static unsigned long long getullong __P((void)); ! #endif ! static intmax_t getintmax __P((void)); ! static uintmax_t getuintmax __P((void)); ! static double getdouble __P((void)); ! #if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD ! static long double getldouble __P((void)); ! #endif static int asciicode __P((void)); static WORD_LIST *garglist; static int retval; + static int conversion_error; ! static char *conv_buf; ! static size_t conv_bufsize; int *************** *** 101,118 **** WORD_LIST *list; { ! int ch, end, fieldwidth, precision, foundmod, fmtlen; ! char convch, nextch, *format, *fmt, *start; retval = EXECUTION_SUCCESS; reset_internal_getopt (); ! while ((ch = internal_getopt (list, "")) != -1) { ! switch (ch) ! { ! case '?': ! default: ! builtin_usage(); ! return (EX_USAGE); ! } } list = loptend; --- 137,152 ---- WORD_LIST *list; { ! int ch, fieldwidth, precision; ! int have_fieldwidth, have_precision; ! long tw; ! char convch, thisch, nextch, *format, *modstart, *fmt, *start; + conversion_error = 0; retval = EXECUTION_SUCCESS; reset_internal_getopt (); ! if (internal_getopt (list, "") != -1) { ! builtin_usage(); ! return (EX_USAGE); } list = loptend; *************** *** 141,156 **** arguments, arguments of zero/null string are provided to use up the format string. */ - do { /* find next format specification */ for (fmt = format; *fmt; fmt++) { ! precision = fieldwidth = foundmod = 0; if (*fmt == '\\') { fmt++; ! /* A NULL third argument to tescape means to not do special processing for \c. */ fmt += tescape (fmt, 1, &nextch, (int *)NULL); --- 175,192 ---- arguments, arguments of zero/null string are provided to use up the format string. */ do { + tw = 0; /* find next format specification */ for (fmt = format; *fmt; fmt++) { ! precision = fieldwidth = 0; ! have_fieldwidth = have_precision = 0; ! if (*fmt == '\\') { fmt++; ! /* A NULL fourth argument to tescape means to not do special processing for \c. */ fmt += tescape (fmt, 1, &nextch, (int *)NULL); *************** *** 178,202 **** for (; *fmt && strchr(SKIP1, *fmt); ++fmt) ; - fieldwidth = (*fmt == '*') ? getint () : 0; ! /* skip to possible '.', get following precision */ ! for (; *fmt && strchr(SKIP2, *fmt); ++fmt) ! ; if (*fmt == '.') { ++fmt; ! precision = (*fmt == '*') ? getint () : 0; } - /* skip to conversion char */ - for (; *fmt && strchr(SKIP2, *fmt); ++fmt) - ; - /* skip possible format modifiers */ ! if (*fmt == 'l' || *fmt == 'L' || *fmt == 'h') ! { ! fmt++; ! foundmod = 1; ! } if (*fmt == 0) --- 214,248 ---- for (; *fmt && strchr(SKIP1, *fmt); ++fmt) ; ! /* Skip optional field width. */ ! if (*fmt == '*') ! { ! fmt++; ! have_fieldwidth = 1; ! fieldwidth = getint (); ! } ! else ! while (DIGIT (*fmt)) ! fmt++; ! ! /* Skip optional '.' and precision */ if (*fmt == '.') { ++fmt; ! if (*fmt == '*') ! { ! fmt++; ! have_precision = 1; ! precision = getint (); ! } ! else ! while (DIGIT (*fmt)) ! fmt++; } /* skip possible format modifiers */ ! modstart = fmt; ! while (*fmt && strchr (LENMODS, *fmt)) ! fmt++; if (*fmt == 0) *************** *** 207,212 **** convch = *fmt; ! nextch = fmt[1]; ! fmt[1] = '\0'; switch(convch) { --- 253,261 ---- convch = *fmt; ! thisch = modstart[0]; ! nextch = modstart[1]; ! modstart[0] = convch; ! modstart[1] = '\0'; ! switch(convch) { *************** *** 229,232 **** --- 278,299 ---- } + case 'n': + { + char *var; + + var = getstr (); + if (var && *var) + { + if (legal_identifier (var)) + bind_var_to_int (var, tw); + else + { + builtin_error ("%s: invalid variable name", var); + PRETURN (EXECUTION_FAILURE); + } + } + break; + } + case 'b': /* expand escapes in argument */ { *************** *** 269,282 **** case 'i': { - long p; char *f; ! if (foundmod == 0 && ((f = mklong (start, convch)) == NULL)) ! PRETURN (EXECUTION_FAILURE); else ! f = start; ! if (getlong (&p)) ! PRETURN (EXECUTION_FAILURE); ! PF(f, p); break; } --- 336,367 ---- case 'i': { char *f; + #if defined (HAVE_LONG_LONG) + if (thisch == 'l' && nextch == 'l') + { + long long p; + + p = getllong (); + f = mklong (start, "ll"); + PF(f, p); + } + else + #endif + if (thisch == 'j') + { + intmax_t p; ! p = getintmax (); ! f = mklong (start, INTMAX_CONV); ! PF(f, p); ! } else ! { ! long p; ! ! p = getlong (); ! f = mklong (start, "l"); ! PF(f, p); ! } break; } *************** *** 287,300 **** case 'X': { - unsigned long p; char *f; ! if (foundmod == 0 && ((f = mklong (start, convch)) == NULL)) ! PRETURN (EXECUTION_FAILURE); else ! f = start; ! if (getulong (&p)) ! PRETURN (EXECUTION_FAILURE); ! PF (f, p); break; } --- 372,403 ---- case 'X': { char *f; + #if defined (HAVE_LONG_LONG) + if (thisch == 'l' && nextch == 'l') + { + unsigned long long p; ! p = getullong (); ! f = mklong (start, "ll"); ! PF(f, p); ! } else ! #endif ! if (thisch == 'j') ! { ! uintmax_t p; ! ! p = getuintmax (); ! f = mklong (start, INTMAX_CONV); ! PF(f, p); ! } ! else ! { ! unsigned long p; ! ! p = getulong (); ! f = mklong (start, "l"); ! PF (f, p); ! } break; } *************** *** 303,314 **** case 'E': case 'f': case 'g': case 'G': { ! double p; ! if (getdouble (&p)) ! PRETURN (EXECUTION_FAILURE); ! PF(start, p); break; } --- 406,436 ---- case 'E': case 'f': + case 'F': case 'g': case 'G': + #if defined (HAVE_PRINTF_A_FORMAT) + case 'a': + case 'A': + #endif { ! char *f; ! #if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD ! if (thisch == 'L') ! { ! long double p; ! p = getldouble (); ! f = mklong (start, "L"); ! PF (f, p); ! } ! else ! #endif ! { ! double p; ! ! p = getdouble (); ! f = mklong (start, ""); ! PF (f, p); ! } break; } *************** *** 321,329 **** } ! fmt[1] = nextch; } } while (garglist && garglist != list->next); PRETURN (retval); } --- 443,455 ---- } ! modstart[0] = thisch; ! modstart[1] = nextch; } } while (garglist && garglist != list->next); + if (conversion_error) + retval = EXECUTION_FAILURE; + PRETURN (retval); } *************** *** 353,360 **** fmt++; ! ljust = fw = pr = 0; /* skip flags */ ! while (*fmt == '#' || *fmt == '-' || *fmt == '+' || *fmt == ' ' || *fmt == '0') { if (*fmt == '-') --- 479,487 ---- fmt++; ! ljust = fw = 0; ! pr = -1; /* skip flags */ ! while (strchr (SKIP1, *fmt)) { if (*fmt == '-') *************** *** 368,376 **** fmt++; fw = fieldwidth; } ! else if (isdigit (*fmt)) { fw = *fmt++ - '0'; ! while (isdigit (*fmt)) fw = (fw * 10) + (*fmt++ - '0'); } --- 495,508 ---- fmt++; fw = fieldwidth; + if (fw < 0) + { + fw = -fw; + ljust = 1; + } } ! else if (DIGIT (*fmt)) { fw = *fmt++ - '0'; ! while (DIGIT (*fmt)) fw = (fw * 10) + (*fmt++ - '0'); } *************** *** 385,392 **** pr = precision; } ! else if (isdigit (*fmt)) { pr = *fmt++ - '0'; ! while (isdigit (*fmt)) pr = (pr * 10) + (*fmt++ - '0'); } --- 517,524 ---- pr = precision; } ! else if (DIGIT (*fmt)) { pr = *fmt++ - '0'; ! while (DIGIT (*fmt)) pr = (pr * 10) + (*fmt++ - '0'); } *************** *** 403,407 **** /* chars from string to print */ ! nc = (pr > 0 && pr <= len) ? pr : len; padlen = fw - nc; --- 535,539 ---- /* chars from string to print */ ! nc = (pr >= 0 && pr <= len) ? pr : len; padlen = fw - nc; *************** *** 429,447 **** *SAWC to 1 before returning. LEN is the length of STRING. */ - #ifdef isoctal - #undef isoctal - #endif - - #define isoctal(c) ((c) >= '0' && (c) <= '7') - - #define OCTVALUE(c) ((c) - '0') - - #ifndef isxdigit - # define isxdigit(c) (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) - #endif - - #define HEXVALUE(c) \ - ((c) >= 'a' && (c) <= 'f' ? (c)-'a'+10 : (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0') - /* Translate a single backslash-escape sequence starting at ESTART (the character after the backslash) and return the number of characters --- 561,564 ---- *************** *** 489,495 **** octal digits... */ case '0': ! for (temp = 3, evalue = 0; isoctal (*p) && temp--; p++) evalue = (evalue * 8) + OCTVALUE (*p); ! *cp = evalue; break; --- 606,612 ---- octal digits... */ case '0': ! for (temp = 3, evalue = 0; ISOCTAL (*p) && temp--; p++) evalue = (evalue * 8) + OCTVALUE (*p); ! *cp = evalue & 0xFF; break; *************** *** 498,504 **** case '1': case '2': case '3': case '4': case '5': case '6': case '7': ! for (temp = 2, evalue = c - '0'; isoctal (*p) && temp--; p++) evalue = (evalue * 8) + OCTVALUE (*p); ! *cp = evalue; break; --- 615,621 ---- case '1': case '2': case '3': case '4': case '5': case '6': case '7': ! for (temp = 2, evalue = c - '0'; ISOCTAL (*p) && temp--; p++) evalue = (evalue * 8) + OCTVALUE (*p); ! *cp = evalue & 0xFF; break; *************** *** 506,512 **** hex digit. */ case 'x': ! for (temp = 3, evalue = 0; isxdigit (*p) && temp--; p++) evalue = (evalue * 16) + HEXVALUE (*p); ! if (temp == 3) { builtin_error ("missing hex digit for \\x"); --- 623,629 ---- hex digit. */ case 'x': ! for (temp = 2, evalue = 0; ISXDIGIT ((unsigned char)*p) && temp--; p++) evalue = (evalue * 16) + HEXVALUE (*p); ! if (temp == 2) { builtin_error ("missing hex digit for \\x"); *************** *** 514,518 **** return 0; } ! *cp = evalue; break; --- 631,635 ---- return 0; } ! *cp = evalue & 0xFF; break; *************** *** 562,566 **** } ! ret = xmalloc (len + 1); for (r = ret, s = string; s && *s; ) { --- 679,683 ---- } ! ret = (char *)xmalloc (len + 1); for (r = ret, s = string; s && *s; ) { *************** *** 590,606 **** static char * ! mklong (str, ch) char *str; ! int ch; { ! static char copy[64]; ! int len; ! len = strlen (str) + 2; ! FASTCOPY (str, copy, len - 3); ! copy[len - 3] = 'l'; ! copy[len - 2] = ch; ! copy[len - 1] = '\0'; ! return (copy); } --- 707,732 ---- static char * ! mklong (str, modifiers) char *str; ! char *modifiers; { ! size_t len, slen, mlen; ! ! slen = strlen (str); ! mlen = strlen (modifiers); ! len = slen + mlen + 1; ! ! if (len > conv_bufsize) ! { ! conv_bufsize = (((len + 1023) >> 10) << 10); ! conv_buf = (char *)xrealloc (conv_buf, conv_bufsize); ! } ! ! FASTCOPY (str, conv_buf, slen - 1); ! FASTCOPY (modifiers, conv_buf + slen - 1, mlen); ! conv_buf[len - 2] = str[slen - 1]; ! conv_buf[len - 1] = '\0'; ! return (conv_buf); } *************** *** 636,641 **** long ret; ! if (getlong (&ret)) ! return (0); if (ret > INT_MAX) --- 762,766 ---- long ret; ! ret = getlong (); if (ret > INT_MAX) *************** *** 653,659 **** } ! static int ! getlong (lp) ! long *lp; { long ret; --- 778,783 ---- } ! static long ! getlong () { long ret; *************** *** 661,697 **** if (garglist == 0) ! { ! *lp = 0L; ! return (0); ! } if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') ! { ! *lp = (long)asciicode (); ! return (0); ! } errno = 0; - /* If we use 0 as the third argument, we can handle octal and hex, which - legal_number does not. (This was - if (legal_number (garglist->word->word, &ret) == 0) - ) */ ret = strtol (garglist->word->word, &ep, 0); ! if (*ep != '\0') { builtin_error ("%s: invalid number", garglist->word->word); ! return (1); } else if (errno == ERANGE) builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); - *lp = ret; garglist = garglist->next; ! return (0); } ! static int ! getulong (ulp) ! unsigned long *ulp; { unsigned long ret; --- 785,816 ---- if (garglist == 0) ! return (0); if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') ! return asciicode (); errno = 0; ret = strtol (garglist->word->word, &ep, 0); ! ! if (*ep) { builtin_error ("%s: invalid number", garglist->word->word); ! /* POSIX.2 says ``...a diagnostic message shall be written to standard ! error, and the utility shall not exit with a zero exit status, but ! shall continue processing any remaining operands and shall write the ! value accumulated at the time the error was detected to standard ! output.'' Yecch. */ ! ret = 0; ! conversion_error = 1; } else if (errno == ERANGE) builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); garglist = garglist->next; ! return (ret); } ! static unsigned long ! getulong () { unsigned long ret; *************** *** 699,762 **** if (garglist == 0) { ! *ulp = (unsigned long)0; ! return (0); } if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') { ! *ulp = (unsigned long)asciicode (); ! return (0); } errno = 0; ! ret = strtoul (garglist->word->word, &ep, 0); if (*ep) { builtin_error ("%s: invalid number", garglist->word->word); ! return (1); } else if (errno == ERANGE) builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); - *ulp = ret; garglist = garglist->next; ! return (0); } ! static int ! getdouble (dp) ! double *dp; { ! double ret; char *ep; if (garglist == 0) { ! *dp = (double)0; ! return (0); } if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') { ! *dp = (double)asciicode (); ! return (0); } errno = 0; ret = strtod (garglist->word->word, &ep); if (*ep) { builtin_error ("%s: invalid number", garglist->word->word); ! return (1); } else if (errno == ERANGE) builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); - *dp = ret; garglist = garglist->next; ! return (0); } /* NO check is needed for garglist here. */ --- 818,1030 ---- if (garglist == 0) + return (0); + + if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); + + errno = 0; + ret = strtoul (garglist->word->word, &ep, 0); + + if (*ep) { ! builtin_error ("%s: invalid number", garglist->word->word); ! /* Same thing about POSIX.2 conversion error requirements as getlong(). */ ! ret = 0; ! conversion_error = 1; } + else if (errno == ERANGE) + builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); + + garglist = garglist->next; + return (ret); + } + + #if defined (HAVE_LONG_LONG) + + static long long + getllong () + { + long long ret; + char *ep; + + if (garglist == 0) + return (0); if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); + + errno = 0; + ret = strtoll (garglist->word->word, &ep, 0); + + if (*ep) { ! builtin_error ("%s: invalid number", garglist->word->word); ! /* POSIX.2 says ``...a diagnostic message shall be written to standard ! error, and the utility shall not exit with a zero exit status, but ! shall continue processing any remaining operands and shall write the ! value accumulated at the time the error was detected to standard ! output.'' Yecch. */ ! ret = 0; ! conversion_error = 1; } + else if (errno == ERANGE) + builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); + + garglist = garglist->next; + return (ret); + } + + static unsigned long long + getullong () + { + unsigned long long ret; + char *ep; + + if (garglist == 0) + return (0); + + if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); errno = 0; ! ret = strtoull (garglist->word->word, &ep, 0); if (*ep) { builtin_error ("%s: invalid number", garglist->word->word); ! /* Same thing about POSIX.2 conversion error requirements as getlong(). */ ! ret = 0; ! conversion_error = 1; } else if (errno == ERANGE) builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); garglist = garglist->next; ! return (ret); } ! #endif /* HAVE_LONG_LONG */ ! ! static intmax_t ! getintmax () { ! intmax_t ret; char *ep; if (garglist == 0) + return (0); + + if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); + + errno = 0; + ret = strtoimax (garglist->word->word, &ep, 0); + + if (*ep) { ! builtin_error ("%s: invalid number", garglist->word->word); ! /* POSIX.2 says ``...a diagnostic message shall be written to standard ! error, and the utility shall not exit with a zero exit status, but ! shall continue processing any remaining operands and shall write the ! value accumulated at the time the error was detected to standard ! output.'' Yecch. */ ! ret = 0; ! conversion_error = 1; } + else if (errno == ERANGE) + builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); + + garglist = garglist->next; + return (ret); + } + + static uintmax_t + getuintmax () + { + uintmax_t ret; + char *ep; + + if (garglist == 0) + return (0); if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); + + errno = 0; + ret = strtoumax (garglist->word->word, &ep, 0); + + if (*ep) { ! builtin_error ("%s: invalid number", garglist->word->word); ! /* Same thing about POSIX.2 conversion error requirements as getlong(). */ ! ret = 0; ! conversion_error = 1; } + else if (errno == ERANGE) + builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); + + garglist = garglist->next; + return (ret); + } + + static double + getdouble () + { + double ret; + char *ep; + + if (garglist == 0) + return (0); + + if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); errno = 0; ret = strtod (garglist->word->word, &ep); + + if (*ep) + { + builtin_error ("%s: invalid number", garglist->word->word); + /* Same thing about POSIX.2 conversion error requirements. */ + ret = 0; + conversion_error = 1; + } + else if (errno == ERANGE) + builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); + + garglist = garglist->next; + return (ret); + } + + #if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD + static long double + getldouble () + { + long double ret; + char *ep; + + if (garglist == 0) + return (0); + + if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return (asciicode ()); + + errno = 0; + ret = strtold (garglist->word->word, &ep); + if (*ep) { builtin_error ("%s: invalid number", garglist->word->word); ! /* Same thing about POSIX.2 conversion error requirements. */ ! ret = 0; ! conversion_error = 1; } else if (errno == ERANGE) builtin_error ("warning: %s: %s", garglist->word->word, strerror(ERANGE)); garglist = garglist->next; ! return (ret); } + #endif /* HAVE_LONG_DOUBLE && HAVE_DECL_STRTOLD */ /* NO check is needed for garglist here. */ diff -Nrc2 bash-2.05/builtins/psize.sh bash-2.05a/builtins/psize.sh *** bash-2.05/builtins/psize.sh Mon Feb 14 10:53:07 2000 --- bash-2.05a/builtins/psize.sh Thu Nov 1 10:57:35 2001 *************** *** 5,12 **** : ${TMPDIR:=/tmp} ! TMPNAME=pipsize.$$ ! TMPFILE=$TMPDIR/$TMPNAME ! trap 'rm -f $TMPFILE' 0 1 2 3 6 15 echo "/*" --- 5,20 ---- : ${TMPDIR:=/tmp} ! # try to use mktemp(1) if the system supports it ! { TMPFILE="`mktemp $TMPDIR/pipsize.XXXXXX 2>/dev/null`"; } 2>/dev/null ! used_mktemp=true ! if [ -z "$TMPFILE" ]; then ! TMPNAME=pipsize.$$ ! TMPFILE=$TMPDIR/$TMPNAME ! used_mktemp=false ! fi ! ! trap 'rm -f "$TMPFILE" ; exit 1' 1 2 3 6 15 ! trap 'rm -f "$TMPFILE"' 0 echo "/*" *************** *** 22,33 **** # existance before we run psize.aux, because `test -e' is not portable, # `test -h' (test for symlinks) is not portable, and `test -f' only ! # checks for regular files # ! rm -f $TMPFILE ! ./psize.aux 2>$TMPFILE | sleep 3 ! if [ -s $TMPFILE ]; then ! echo "#define PIPESIZE `cat $TMPFILE`" else echo "#define PIPESIZE 512" --- 30,42 ---- # existance before we run psize.aux, because `test -e' is not portable, # `test -h' (test for symlinks) is not portable, and `test -f' only ! # checks for regular files. If we used mktemp(1), we're ahead of the ! # game. # ! $used_mktemp || rm -f "$TMPFILE" ! ./psize.aux 2>"$TMPFILE" | sleep 3 ! if [ -s "$TMPFILE" ]; then ! echo "#define PIPESIZE `cat "$TMPFILE"`" else echo "#define PIPESIZE 512" diff -Nrc2 bash-2.05/builtins/pushd.def bash-2.05a/builtins/pushd.def *** bash-2.05/builtins/pushd.def Wed Feb 14 17:10:37 2001 --- bash-2.05a/builtins/pushd.def Mon Sep 17 13:46:28 2001 *************** *** 137,146 **** static int directory_list_offset; ! static void pushd_error (); ! static void clear_directory_stack (); ! static int cd_to_string (); ! static int change_to_temp (); ! static int get_dirstack_index (); ! static void add_dirstack_element (); #define NOCD 0x01 --- 137,146 ---- static int directory_list_offset; ! static void pushd_error __P((int, char *)); ! static void clear_directory_stack __P((void)); ! static int cd_to_string __P((char *)); ! static int change_to_temp __P((char *)); ! static void add_dirstack_element __P((char *)); ! static int get_dirstack_index __P((long, int, int *)); #define NOCD 0x01 *************** *** 294,298 **** which_word = (char *)NULL; ! for (flags = 0, which = 0L, direction = '+'; list; list = list->next) { if (ISOPTION (list->word->word, 'n')) --- 294,298 ---- which_word = (char *)NULL; ! for (flags = 0, which = 0, direction = '+'; list; list = list->next) { if (ISOPTION (list->word->word, 'n')) *************** *** 538,542 **** static int get_dirstack_index (ind, sign, indexp) ! int ind, sign, *indexp; { if (indexp) --- 538,543 ---- static int get_dirstack_index (ind, sign, indexp) ! long ind; ! int sign, *indexp; { if (indexp) *************** *** 553,558 **** return 0; } ! else return (sign > 0 ? directory_list_offset - ind : ind); } --- 554,561 ---- return 0; } ! else if (ind >= 0 && ind <= directory_list_offset) return (sign > 0 ? directory_list_offset - ind : ind); + else + return -1; } *************** *** 587,591 **** char * get_dirstack_element (ind, sign) ! int ind, sign; { int i; --- 590,595 ---- char * get_dirstack_element (ind, sign) ! long ind; ! int sign; { int i; *************** *** 599,603 **** void set_dirstack_element (ind, sign, value) ! int ind, sign; char *value; { --- 603,608 ---- void set_dirstack_element (ind, sign, value) ! long ind; ! int sign; char *value; { diff -Nrc2 bash-2.05/builtins/read.def bash-2.05a/builtins/read.def *** bash-2.05/builtins/read.def Wed Feb 14 17:10:46 2001 --- bash-2.05a/builtins/read.def Wed Oct 31 10:31:52 2001 *************** *** 84,96 **** #if defined (READLINE) ! static char *edit_line (); ! static void set_eol_delim (); ! static void reset_eol_delim (); #endif ! static SHELL_VAR *bind_read_variable (); static procenv_t alrmbuf; static SigHandler *old_alrm; ! static int delim; static sighandler --- 84,99 ---- #if defined (READLINE) ! static char *edit_line __P((char *)); ! static void set_eol_delim __P((int)); ! static void reset_eol_delim __P((char *)); #endif ! static SHELL_VAR *bind_read_variable __P((char *, char *)); ! ! static sighandler sigalrm __P((int)); ! static void reset_alarm __P((void)); static procenv_t alrmbuf; static SigHandler *old_alrm; ! static unsigned char delim; static sighandler *************** *** 121,125 **** int size, i, pass_next, saw_escape, eof, opt, retval, code; int input_is_tty, input_is_pipe, unbuffered_read; ! int raw, edit, tmout, nchars, silent; long timeoutval, ncharsval; char c; --- 124,129 ---- int size, i, pass_next, saw_escape, eof, opt, retval, code; int input_is_tty, input_is_pipe, unbuffered_read; ! int raw, edit, nchars, silent, have_timeout; ! unsigned int tmout; long timeoutval, ncharsval; char c; *************** *** 136,139 **** --- 140,162 ---- #endif + USE_VAR(size); + USE_VAR(i); + USE_VAR(pass_next); + USE_VAR(saw_escape); + USE_VAR(input_is_pipe); + /* USE_VAR(raw); */ + USE_VAR(edit); + USE_VAR(tmout); + USE_VAR(nchars); + USE_VAR(silent); + USE_VAR(ifs_chars); + USE_VAR(prompt); + USE_VAR(arrayname); + #if defined (READLINE) + USE_VAR(rlbuf); + USE_VAR(rlind); + #endif + USE_VAR(list); + i = 0; /* Index into the string that we are reading. */ raw = edit = 0; /* Not reading raw input by default. */ *************** *** 146,151 **** #endif ! tmout = -1; /* no timeout */ ! nchars = input_is_tty = input_is_pipe = unbuffered_read = 0; delim = '\n'; /* read until newline */ --- 169,174 ---- #endif ! tmout = 0; /* no timeout */ ! nchars = input_is_tty = input_is_pipe = unbuffered_read = have_timeout = 0; delim = '\n'; /* read until newline */ *************** *** 176,180 **** case 't': code = legal_number (list_optarg, &timeoutval); ! if (code == 0 || timeoutval < 0) { builtin_error ("%s: invalid timeout specification", list_optarg); --- 199,203 ---- case 't': code = legal_number (list_optarg, &timeoutval); ! if (code == 0 || timeoutval < 0 || timeoutval != (unsigned int)timeoutval) { builtin_error ("%s: invalid timeout specification", list_optarg); *************** *** 182,190 **** } else ! tmout = timeoutval; break; case 'n': code = legal_number (list_optarg, &ncharsval); ! if (code == 0 || ncharsval < 0) { builtin_error ("%s: invalid number specification", list_optarg); --- 205,216 ---- } else ! { ! have_timeout = 1; ! tmout = timeoutval; ! } break; case 'n': code = legal_number (list_optarg, &ncharsval); ! if (code == 0 || ncharsval < 0 || ncharsval != (int)ncharsval) { builtin_error ("%s: invalid number specification", list_optarg); *************** *** 205,209 **** /* `read -t 0 var' returns failure immediately. */ ! if (tmout == 0) return (EXECUTION_FAILURE); --- 231,235 ---- /* `read -t 0 var' returns failure immediately. */ ! if (have_timeout && tmout == 0) return (EXECUTION_FAILURE); *************** *** 214,218 **** ifs_chars = ""; /* XXX */ ! input_string = xmalloc (size = 128); begin_unwind_frame ("read_builtin"); --- 240,244 ---- ifs_chars = ""; /* XXX */ ! input_string = (char *)xmalloc (size = 128); begin_unwind_frame ("read_builtin"); *************** *** 251,255 **** input redirection). */ if ((fstat (0, &tsb) < 0) || S_ISREG (tsb.st_mode)) ! tmout = -1; } --- 277,281 ---- input redirection). */ if ((fstat (0, &tsb) < 0) || S_ISREG (tsb.st_mode)) ! tmout = 0; } *************** *** 359,363 **** if (i + 2 >= size) { ! input_string = xrealloc (input_string, size += 128); remove_unwind_protect (); add_unwind_protect (xfree, input_string); --- 385,389 ---- if (i + 2 >= size) { ! input_string = (char *)xrealloc (input_string, size += 128); remove_unwind_protect (); add_unwind_protect (xfree, input_string); *************** *** 384,388 **** } ! if (c == delim) break; --- 410,414 ---- } ! if ((unsigned char)c == delim) break; *************** *** 411,415 **** rl_num_chars_to_read = 0; if (delim != '\n') ! reset_eol_delim (); } else --- 437,441 ---- rl_num_chars_to_read = 0; if (delim != '\n') ! reset_eol_delim ((char *)NULL); } else *************** *** 434,443 **** if (arrayname) { ! var = find_variable (arrayname); if (var == 0) ! var = make_new_array_variable (arrayname); ! else if (array_p (var) == 0) ! var = convert_var_to_array (var); ! empty_array (array_cell (var)); --- 460,466 ---- if (arrayname) { ! var = find_or_make_array_variable (arrayname, 1); if (var == 0) ! return EXECUTION_FAILURE; /* readonly or noassign */ empty_array (array_cell (var)); *************** *** 505,509 **** { builtin_error ("`%s': not a valid identifier", varname); ! free (orig_input_string); return (EXECUTION_FAILURE); } --- 528,532 ---- { builtin_error ("`%s': not a valid identifier", varname); ! xfree (orig_input_string); return (EXECUTION_FAILURE); } *************** *** 523,527 **** t1 = dequote_string (t); var = bind_read_variable (varname, t1); ! free (t1); } else --- 546,550 ---- t1 = dequote_string (t); var = bind_read_variable (varname, t1); ! xfree (t1); } else *************** *** 537,541 **** if (var == 0) { ! free (orig_input_string); return (EXECUTION_FAILURE); } --- 560,564 ---- if (var == 0) { ! xfree (orig_input_string); return (EXECUTION_FAILURE); } *************** *** 553,557 **** { builtin_error ("`%s': not a valid identifier", list->word->word); ! free (orig_input_string); return (EXECUTION_FAILURE); } --- 576,580 ---- { builtin_error ("`%s': not a valid identifier", list->word->word); ! xfree (orig_input_string); return (EXECUTION_FAILURE); } *************** *** 566,570 **** t = dequote_string (input_string); var = bind_read_variable (list->word->word, t); ! free (t); } else --- 589,593 ---- t = dequote_string (input_string); var = bind_read_variable (list->word->word, t); ! xfree (t); } else *************** *** 573,577 **** if (var) VUNSETATTR (var, att_invisible); ! free (orig_input_string); return (retval); --- 596,600 ---- if (var) VUNSETATTR (var, att_invisible); ! xfree (orig_input_string); return (retval); *************** *** 584,602 **** #if defined (ARRAY_VARS) if (valid_array_reference (name) == 0) ! { ! #if 0 ! if (legal_identifier (name) == 0) ! { ! builtin_error ("`%s': not a valid identifier", name); ! return ((SHELL_VAR *)NULL); ! } ! #endif ! return (bind_variable (name, value)); ! } else ! return (do_array_element_assignment (name, value)); ! #else return bind_variable (name, value); ! #endif } --- 607,616 ---- #if defined (ARRAY_VARS) if (valid_array_reference (name) == 0) ! return (bind_variable (name, value)); else ! return (assign_array_element (name, value)); ! #else /* !ARRAY_VARS */ return bind_variable (name, value); ! #endif /* !ARRAY_VARS */ } *************** *** 615,619 **** return ret; len = strlen (ret); ! ret = xrealloc (ret, len + 2); ret[len++] = delim; ret[len] = '\0'; --- 629,633 ---- return ret; len = strlen (ret); ! ret = (char *)xrealloc (ret, len + 2); ret[len++] = delim; ret[len] = '\0'; *************** *** 622,630 **** static int old_delim_ctype; ! static Function *old_delim_func; static int old_newline_ctype; ! static Function *old_newline_func; ! static int delim_char; static void --- 636,644 ---- static int old_delim_ctype; ! static rl_command_func_t *old_delim_func; static int old_newline_ctype; ! static rl_command_func_t *old_newline_func; ! static unsigned char delim_char; static void *************** *** 654,659 **** static void ! reset_eol_delim (c) ! int c; { Keymap cmap; --- 668,673 ---- static void ! reset_eol_delim (cp) ! char *cp; { Keymap cmap; diff -Nrc2 bash-2.05/builtins/reserved.def bash-2.05a/builtins/reserved.def *** bash-2.05/builtins/reserved.def Thu Aug 5 07:44:11 1999 --- bash-2.05a/builtins/reserved.def Thu Sep 27 09:40:11 2001 *************** *** 160,164 **** # endif /* BANG_HISTORY */ HISTIGNORE A colon-separated list of patterns used to decide which ! command should be saved on the history list. #endif /* HISTORY */ $END --- 160,164 ---- # endif /* BANG_HISTORY */ HISTIGNORE A colon-separated list of patterns used to decide which ! commands should be saved on the history list. #endif /* HISTORY */ $END diff -Nrc2 bash-2.05/builtins/return.def bash-2.05a/builtins/return.def *** bash-2.05/builtins/return.def Wed Sep 8 12:56:25 1999 --- bash-2.05a/builtins/return.def Wed May 2 12:50:17 2001 *************** *** 53,57 **** WORD_LIST *list; { ! return_catch_value = list ? get_numeric_arg (list, 1) : last_command_exit_value; if (return_catch_flag) --- 53,57 ---- WORD_LIST *list; { ! return_catch_value = list ? get_exitstat (list) : last_command_exit_value; if (return_catch_flag) diff -Nrc2 bash-2.05/builtins/set.def bash-2.05a/builtins/set.def *** bash-2.05/builtins/set.def Wed Mar 28 14:47:55 2001 --- bash-2.05a/builtins/set.def Mon Oct 29 13:33:31 2001 *************** *** 50,55 **** #endif - extern int interactive; extern int noclobber, posixly_correct, ignoreeof, eof_encountered_limit; #if defined (READLINE) extern int no_line_editing; --- 50,57 ---- #endif extern int noclobber, posixly_correct, ignoreeof, eof_encountered_limit; + #if defined (HISTORY) + extern int dont_save_function_defs; + #endif #if defined (READLINE) extern int no_line_editing; *************** *** 93,96 **** --- 95,99 ---- noexec same as -n noglob same as -f + nolog currently accepted but ignored notify same as -b nounset same as -u *************** *** 133,146 **** $END ! static int set_ignoreeof (); ! static int set_posix_mode (); #if defined (READLINE) ! static int set_edit_mode (); ! static int get_edit_mode (); #endif #if defined (HISTORY) ! static int bash_set_history (); #endif --- 136,152 ---- $END ! static void print_minus_o_option __P((char *, int, int)); ! static void print_all_shell_variables __P((void)); ! ! static int set_ignoreeof __P((int, char *)); ! static int set_posix_mode __P((int, char *)); #if defined (READLINE) ! static int set_edit_mode __P((int, char *)); ! static int get_edit_mode __P((char *)); #endif #if defined (HISTORY) ! static int bash_set_history __P((int, char *)); #endif *************** *** 180,200 **** }; struct { char *name; int *variable; ! Function *set_func; ! Function *get_func; } binary_o_options[] = { #if defined (HISTORY) ! { "history", &remember_on_history, bash_set_history, (Function *)NULL }, #endif ! { "ignoreeof", &ignoreeof, set_ignoreeof, (Function *)NULL }, ! { "interactive-comments", &interactive_comments, (Function *)NULL, (Function *)NULL }, ! { "posix", &posixly_correct, set_posix_mode, (Function *)NULL }, #if defined (READLINE) { "emacs", (int *)NULL, set_edit_mode, get_edit_mode }, { "vi", (int *)NULL, set_edit_mode, get_edit_mode }, #endif ! { (char *)NULL, (int *)NULL } }; --- 186,212 ---- }; + typedef int setopt_set_func_t __P((int, char *)); + typedef int setopt_get_func_t __P((char *)); + struct { char *name; int *variable; ! setopt_set_func_t *set_func; ! setopt_get_func_t *get_func; } binary_o_options[] = { #if defined (HISTORY) ! { "history", &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL }, ! #endif ! { "ignoreeof", &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, ! { "interactive-comments", &interactive_comments, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, ! #if defined (HISTORY) ! { "nolog", &dont_save_function_defs, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, #endif ! { "posix", &posixly_correct, set_posix_mode, (setopt_get_func_t *)NULL }, #if defined (READLINE) { "emacs", (int *)NULL, set_edit_mode, get_edit_mode }, { "vi", (int *)NULL, set_edit_mode, get_edit_mode }, #endif ! { (char *)NULL, (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL } }; *************** *** 376,380 **** { int option_char; - VFunction *set_func; register int i; --- 388,391 ---- *************** *** 388,392 **** } ! for (i = 0, option_char = -1, set_func = 0; o_options[i].name; i++) { if (STREQ (option_name, o_options[i].name)) --- 399,403 ---- } ! for (i = 0, option_char = -1; o_options[i].name; i++) { if (STREQ (option_name, o_options[i].name)) *************** *** 451,455 **** vsize += strlen (binary_o_options[i].name) + 1; ! value = xmalloc (vsize + 1); for (i = vptr = 0; o_options[i].name; i++) --- 462,466 ---- vsize += strlen (binary_o_options[i].name) + 1; ! value = (char *)xmalloc (vsize + 1); for (i = vptr = 0; o_options[i].name; i++) *************** *** 753,756 **** --- 764,768 ---- #if defined (ARRAY_VARS) + unset_array = 0; if (!unset_function && valid_array_reference (name)) { diff -Nrc2 bash-2.05/builtins/setattr.def bash-2.05a/builtins/setattr.def *** bash-2.05/builtins/setattr.def Wed Feb 14 17:11:44 2001 --- bash-2.05a/builtins/setattr.def Tue Aug 28 13:20:53 2001 *************** *** 41,45 **** extern int array_needs_making; extern char *this_command_name; ! extern Function *this_shell_builtin; #ifdef ARRAY_VARS --- 41,45 ---- extern int array_needs_making; extern char *this_command_name; ! extern sh_builtin_func_t *this_shell_builtin; #ifdef ARRAY_VARS *************** *** 249,253 **** --- 249,257 ---- continue; #endif + #if 0 if ((var->attributes & attribute) && invisible_p (var) == 0) + #else + if ((var->attributes & attribute)) + #endif show_var_attributes (var, READONLY_OR_EXPORT, nodefs); } *************** *** 328,331 **** --- 332,337 ---- else if (function_p (var)) printf ("%s\n", named_function_string (var->name, function_cell (var), 1)); + else if (invisible_p (var)) + printf ("%s\n", var->name); else { *************** *** 343,347 **** { SHELL_VAR *var; - int ret; var = find_tempenv_variable (name); --- 349,352 ---- diff -Nrc2 bash-2.05/builtins/shift.def bash-2.05a/builtins/shift.def *** bash-2.05/builtins/shift.def Thu Aug 5 07:44:38 1999 --- bash-2.05a/builtins/shift.def Mon May 21 15:26:12 2001 *************** *** 53,57 **** WORD_LIST *list; { ! int times; register int count; WORD_LIST *temp; --- 53,57 ---- WORD_LIST *list; { ! long times; register int count; WORD_LIST *temp; diff -Nrc2 bash-2.05/builtins/shopt.def bash-2.05a/builtins/shopt.def *** bash-2.05/builtins/shopt.def Wed Feb 14 17:11:56 2001 --- bash-2.05a/builtins/shopt.def Tue Sep 11 15:55:06 2001 *************** *** 79,83 **** extern int hist_verify, history_reediting, perform_hostname_completion; extern int no_empty_command_completion; ! extern void enable_hostname_completion (); #endif --- 79,83 ---- extern int hist_verify, history_reediting, perform_hostname_completion; extern int no_empty_command_completion; ! extern int enable_hostname_completion __P((int)); #endif *************** *** 91,152 **** #endif ! extern void set_shellopts (); ! ! static int set_interactive_comments (); #if defined (RESTRICTED_SHELL) ! static int set_restricted_shell (); #endif static struct { char *name; int *value; ! Function *set_func; } shopt_vars[] = { ! { "cdable_vars", &cdable_vars, (Function *)NULL }, ! { "cdspell", &cdspelling, (Function *)NULL }, ! { "checkhash", &check_hashed_filenames, (Function *)NULL }, ! { "checkwinsize", &check_window_size, (Function *)NULL }, #if defined (HISTORY) ! { "cmdhist", &command_oriented_history, (Function *)NULL }, #endif ! { "dotglob", &glob_dot_filenames, (Function *)NULL }, ! { "execfail", &no_exit_on_failed_exec, (Function *)NULL }, ! { "expand_aliases", &expand_aliases, (Function *)NULL }, #if defined (EXTENDED_GLOB) ! { "extglob", &extended_glob, (Function *)NULL }, #endif #if defined (READLINE) ! { "histreedit", &history_reediting, (Function *)NULL }, #endif #if defined (HISTORY) ! { "histappend", &force_append_history, (Function *)NULL }, #endif #if defined (READLINE) ! { "histverify", &hist_verify, (Function *)NULL }, ! { "hostcomplete", &perform_hostname_completion, (Function *)enable_hostname_completion }, #endif ! { "huponexit", &hup_on_exit, (Function *)NULL }, { "interactive_comments", &interactive_comments, set_interactive_comments }, #if defined (HISTORY) ! { "lithist", &literal_history, (Function *)NULL }, #endif ! { "mailwarn", &mail_warning, (Function *)NULL }, #if defined (READLINE) ! { "no_empty_cmd_completion", &no_empty_command_completion, (Function *)NULL }, #endif ! { "nocaseglob", &glob_ignore_case, (Function *)NULL }, ! { "nullglob", &allow_null_glob_expansion, (Function *)NULL }, #if defined (PROGRAMMABLE_COMPLETION) ! { "progcomp", &prog_completion_enabled, (Function *)NULL }, #endif ! { "promptvars", &promptvars, (Function *)NULL }, #if defined (RESTRICTED_SHELL) { "restricted_shell", &restricted_shell, set_restricted_shell }, #endif ! { "shift_verbose", &print_shift_error, (Function *)NULL }, ! { "sourcepath", &source_uses_path, (Function *)NULL }, ! { "xpg_echo", &xpg_echo, (Function *)NULL }, ! { (char *)0, (int *)0, (Function *)NULL } }; --- 91,155 ---- #endif ! static int set_interactive_comments __P((int)); #if defined (RESTRICTED_SHELL) ! static int set_restricted_shell __P((int)); #endif + static int shopt_login_shell; + + typedef int shopt_set_func_t __P((int)); + static struct { char *name; int *value; ! shopt_set_func_t *set_func; } shopt_vars[] = { ! { "cdable_vars", &cdable_vars, (shopt_set_func_t *)NULL }, ! { "cdspell", &cdspelling, (shopt_set_func_t *)NULL }, ! { "checkhash", &check_hashed_filenames, (shopt_set_func_t *)NULL }, ! { "checkwinsize", &check_window_size, (shopt_set_func_t *)NULL }, #if defined (HISTORY) ! { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL }, #endif ! { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL }, ! { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL }, ! { "expand_aliases", &expand_aliases, (shopt_set_func_t *)NULL }, #if defined (EXTENDED_GLOB) ! { "extglob", &extended_glob, (shopt_set_func_t *)NULL }, #endif #if defined (READLINE) ! { "histreedit", &history_reediting, (shopt_set_func_t *)NULL }, #endif #if defined (HISTORY) ! { "histappend", &force_append_history, (shopt_set_func_t *)NULL }, #endif #if defined (READLINE) ! { "histverify", &hist_verify, (shopt_set_func_t *)NULL }, ! { "hostcomplete", &perform_hostname_completion, enable_hostname_completion }, #endif ! { "huponexit", &hup_on_exit, (shopt_set_func_t *)NULL }, { "interactive_comments", &interactive_comments, set_interactive_comments }, #if defined (HISTORY) ! { "lithist", &literal_history, (shopt_set_func_t *)NULL }, #endif ! { "login_shell", &shopt_login_shell, set_login_shell }, ! { "mailwarn", &mail_warning, (shopt_set_func_t *)NULL }, #if defined (READLINE) ! { "no_empty_cmd_completion", &no_empty_command_completion, (shopt_set_func_t *)NULL }, #endif ! { "nocaseglob", &glob_ignore_case, (shopt_set_func_t *)NULL }, ! { "nullglob", &allow_null_glob_expansion, (shopt_set_func_t *)NULL }, #if defined (PROGRAMMABLE_COMPLETION) ! { "progcomp", &prog_completion_enabled, (shopt_set_func_t *)NULL }, #endif ! { "promptvars", &promptvars, (shopt_set_func_t *)NULL }, #if defined (RESTRICTED_SHELL) { "restricted_shell", &restricted_shell, set_restricted_shell }, #endif ! { "shift_verbose", &print_shift_error, (shopt_set_func_t *)NULL }, ! { "sourcepath", &source_uses_path, (shopt_set_func_t *)NULL }, ! { "xpg_echo", &xpg_echo, (shopt_set_func_t *)NULL }, ! { (char *)0, (int *)0, (shopt_set_func_t *)NULL } }; *************** *** 154,160 **** static char *off = "off"; ! static int list_shopt_o_options (); ! static int list_some_o_options (), list_some_shopts (); ! static int toggle_shopts (), list_shopts (), set_shopt_o_options (); #define SFLAG 0x01 --- 157,168 ---- static char *off = "off"; ! static int find_shopt __P((char *)); ! static int toggle_shopts __P((int, WORD_LIST *, int)); ! static void print_shopt __P((char *, int, int)); ! static int list_shopts __P((WORD_LIST *, int)); ! static int list_some_shopts __P((int, int)); ! static int list_shopt_o_options __P((WORD_LIST *, int)); ! static int list_some_o_options __P((int, int)); ! static int set_shopt_o_options __P((int, WORD_LIST *, int)); #define SFLAG 0x01 *************** *** 245,248 **** --- 253,258 ---- perform_hostname_completion = 1; #endif + + shopt_login_shell = login_shell; } *************** *** 445,448 **** --- 455,467 ---- #endif /* RESTRICTED_SHELL */ + /* Not static so shell.c can call it to initialize shopt_login_shell */ + int + set_login_shell (mode) + int mode; + { + shopt_login_shell = login_shell != 0; + return (0); + } + char ** get_shopt_options () *************** *** 457,459 **** --- 476,518 ---- ret[i] = (char *)NULL; return ret; + } + + /* + * External interface for other parts of the shell. NAME is a string option; + * MODE is 0 if we want to unset an option; 1 if we want to set an option. + * REUSABLE is 1 if we want to print output in a form that may be reused. + */ + int + shopt_setopt (name, mode) + char *name; + int mode; + { + WORD_LIST *wl; + int r; + + wl = add_string_to_list (name, (WORD_LIST *)NULL); + r = toggle_shopts (mode, wl, 0); + dispose_words (wl); + return r; + } + + int + shopt_listopt (name, reusable) + char *name; + int reusable; + { + int i; + + if (name == 0) + return (list_shopts ((WORD_LIST *)NULL, reusable ? PFLAG : 0)); + + i = find_shopt (name); + if (i < 0) + { + SHOPT_ERROR (name); + return (EXECUTION_FAILURE); + } + + print_shopt (name, *shopt_vars[i].value, reusable ? PFLAG : 0); + return (EXECUTION_SUCCESS); } diff -Nrc2 bash-2.05/builtins/suspend.def bash-2.05a/builtins/suspend.def *** bash-2.05/builtins/suspend.def Thu Aug 5 07:45:00 1999 --- bash-2.05a/builtins/suspend.def Tue Sep 11 15:41:26 2001 *************** *** 48,53 **** #include "bashgetopt.h" - extern int job_control; - static SigHandler *old_cont; #if 0 --- 48,51 ---- diff -Nrc2 bash-2.05/builtins/test.def bash-2.05a/builtins/test.def *** bash-2.05/builtins/test.def Thu Aug 5 07:45:06 1999 --- bash-2.05a/builtins/test.def Wed May 30 09:09:31 2001 *************** *** 32,35 **** --- 32,36 ---- File operators: + -a FILE True if file exists. -b FILE True if file is block special. -c FILE True if file is character special. diff -Nrc2 bash-2.05/builtins/trap.def bash-2.05a/builtins/trap.def *** bash-2.05/builtins/trap.def Fri Nov 3 11:18:54 2000 --- bash-2.05a/builtins/trap.def Tue Sep 11 15:42:30 2001 *************** *** 59,63 **** #include "bashgetopt.h" ! static int display_traps (); /* The trap command: --- 59,64 ---- #include "bashgetopt.h" ! static void showtrap __P((int)); ! static int display_traps __P((WORD_LIST *)); /* The trap command: *************** *** 80,84 **** #define IGNORE 2 /* Ignore this signal. */ ! extern int interactive, posixly_correct; int --- 81,85 ---- #define IGNORE 2 /* Ignore this signal. */ ! extern int posixly_correct; int *************** *** 229,233 **** if (list == 0) { ! for (i = 0; i <= NSIG; i++) showtrap (i); return (EXECUTION_SUCCESS); --- 230,234 ---- if (list == 0) { ! for (i = 0; i < BASH_NSIG; i++) showtrap (i); return (EXECUTION_SUCCESS); diff -Nrc2 bash-2.05/builtins/type.def bash-2.05a/builtins/type.def *** bash-2.05/builtins/type.def Wed Feb 14 17:12:13 2001 --- bash-2.05a/builtins/type.def Mon May 14 12:05:00 2001 *************** *** 65,69 **** #include "bashgetopt.h" ! extern int find_reserved_word (); extern char *this_command_name; --- 65,69 ---- #include "bashgetopt.h" ! extern int find_reserved_word __P((char *)); extern char *this_command_name; *************** *** 214,218 **** { int found, i, found_file, f; ! char *full_path, *x, *cwd; SHELL_VAR *func; #if defined (ALIAS) --- 214,218 ---- { int found, i, found_file, f; ! char *full_path, *x; SHELL_VAR *func; #if defined (ALIAS) diff -Nrc2 bash-2.05/builtins/ulimit.def bash-2.05a/builtins/ulimit.def *** bash-2.05/builtins/ulimit.def Mon Dec 18 10:37:45 2000 --- bash-2.05a/builtins/ulimit.def Thu Sep 13 14:30:54 2001 *************** *** 45,49 **** -v the size of virtual memory ! If LIMIT is given, it is the new value of the specified resource. Otherwise, the current value of the specified resource is printed. If no option is given, then -f is assumed. Values are in 1024-byte --- 45,51 ---- -v the size of virtual memory ! If LIMIT is given, it is the new value of the specified resource; ! the special LIMIT values `soft', `hard', and `unlimited' stand for ! the current soft limit, the current hard limit, and no limit, respectively. Otherwise, the current value of the specified resource is printed. If no option is given, then -f is assumed. Values are in 1024-byte *************** *** 110,115 **** #endif - #define DESCFMT "%-28s" - /* Some systems use RLIMIT_NOFILE, others use RLIMIT_OFILE */ #if defined (HAVE_RESOURCE) && defined (RLIMIT_OFILE) && !defined (RLIMIT_NOFILE) --- 112,115 ---- *************** *** 155,172 **** #endif #define LIMIT_HARD 0x01 #define LIMIT_SOFT 0x02 static int ulimit_internal __P((int, char *, int, int)); static void printone __P((int, RLIMTYPE, int)); static void print_all_limits __P((int)); ! static int get_limit __P((int, int, RLIMTYPE *)); ! static int set_limit __P((int, RLIMTYPE, int)); static int filesize __P((RLIMTYPE *)); static int pipesize __P((RLIMTYPE *)); ! static int getmaxuprc __P((int, RLIMTYPE *)); ! static int getmaxvm __P((int, RLIMTYPE *)); typedef struct { --- 155,185 ---- #endif + #if !defined (RLIM_SAVED_CUR) + # define RLIM_SAVED_CUR RLIM_INFINITY + #endif + + #if !defined (RLIM_SAVED_MAX) + # define RLIM_SAVED_MAX RLIM_INFINITY + #endif + #define LIMIT_HARD 0x01 #define LIMIT_SOFT 0x02 + static int _findlim __P((int)); + static int ulimit_internal __P((int, char *, int, int)); + + static int get_limit __P((int, RLIMTYPE *, RLIMTYPE *)); + static int set_limit __P((int, RLIMTYPE, int)); + static void printone __P((int, RLIMTYPE, int)); static void print_all_limits __P((int)); ! static int set_all_limits __P((int, RLIMTYPE)); static int filesize __P((RLIMTYPE *)); static int pipesize __P((RLIMTYPE *)); ! static int getmaxuprc __P((RLIMTYPE *)); ! static int getmaxvm __P((RLIMTYPE *, RLIMTYPE *)); typedef struct { *************** *** 175,210 **** int block_factor; /* Blocking factor for specific limit. */ char *description; /* Descriptive string to output. */ } RESOURCE_LIMITS; static RESOURCE_LIMITS limits[] = { #ifdef RLIMIT_CORE ! { 'c', RLIMIT_CORE, 1024, "core file size (blocks)" }, #endif #ifdef RLIMIT_DATA ! { 'd', RLIMIT_DATA, 1024, "data seg size (kbytes)" }, #endif ! { 'f', RLIMIT_FILESIZE, 1024, "file size (blocks)" }, #ifdef RLIMIT_MEMLOCK ! { 'l', RLIMIT_MEMLOCK, 1024, "max locked memory (kbytes)" }, #endif #ifdef RLIMIT_RSS ! { 'm', RLIMIT_RSS, 1024, "max memory size (kbytes)" }, #endif /* RLIMIT_RSS */ ! { 'n', RLIMIT_OPENFILES, 1, "open files" }, ! { 'p', RLIMIT_PIPESIZE, 512, "pipe size (512 bytes)" }, #ifdef RLIMIT_STACK ! { 's', RLIMIT_STACK, 1024, "stack size (kbytes)" }, #endif #ifdef RLIMIT_CPU ! { 't', RLIMIT_CPU, 1, "cpu time (seconds)" }, #endif /* RLIMIT_CPU */ ! { 'u', RLIMIT_MAXUPROC, 1, "max user processes" }, #if defined (HAVE_RESOURCE) ! { 'v', RLIMIT_VIRTMEM, RLIMIT_VMBLKSZ, "virtual memory (kbytes)" }, #endif #ifdef RLIMIT_SWAP ! { 'w', RLIMIT_SWAP, 1024, "swap size (kbytes)" }, #endif ! { -1, -1, -1, (char *)NULL } }; #define NCMDS (sizeof(limits) / sizeof(limits[0])) --- 188,224 ---- int block_factor; /* Blocking factor for specific limit. */ char *description; /* Descriptive string to output. */ + char *units; /* scale */ } RESOURCE_LIMITS; static RESOURCE_LIMITS limits[] = { #ifdef RLIMIT_CORE ! { 'c', RLIMIT_CORE, 1024, "core file size", "blocks" }, #endif #ifdef RLIMIT_DATA ! { 'd', RLIMIT_DATA, 1024, "data seg size", "kbytes" }, #endif ! { 'f', RLIMIT_FILESIZE, 1024, "file size", "blocks" }, #ifdef RLIMIT_MEMLOCK ! { 'l', RLIMIT_MEMLOCK, 1024, "max locked memory", "kbytes" }, #endif #ifdef RLIMIT_RSS ! { 'm', RLIMIT_RSS, 1024, "max memory size", "kbytes" }, #endif /* RLIMIT_RSS */ ! { 'n', RLIMIT_OPENFILES, 1, "open files", (char *)NULL}, ! { 'p', RLIMIT_PIPESIZE, 512, "pipe size", "512 bytes" }, #ifdef RLIMIT_STACK ! { 's', RLIMIT_STACK, 1024, "stack size", "kbytes" }, #endif #ifdef RLIMIT_CPU ! { 't', RLIMIT_CPU, 1, "cpu time", "seconds" }, #endif /* RLIMIT_CPU */ ! { 'u', RLIMIT_MAXUPROC, 1, "max user processes", (char *)NULL }, #if defined (HAVE_RESOURCE) ! { 'v', RLIMIT_VIRTMEM, RLIMIT_VMBLKSZ, "virtual memory", "kbytes" }, #endif #ifdef RLIMIT_SWAP ! { 'w', RLIMIT_SWAP, 1024, "swap size", "kbytes" }, #endif ! { -1, -1, -1, (char *)NULL, (char *)NULL } }; #define NCMDS (sizeof(limits) / sizeof(limits[0])) *************** *** 309,312 **** --- 323,337 ---- if (all_limits) { + #ifdef NOTYET + if (list) /* setting */ + { + if (STREQ (list->word->word, "unlimited") == 0) + { + builtin_error ("invalid limit argument: %s", list->word->word); + return (EXECUTION_FAILURE); + } + return (set_all_limits (mode == 0 ? LIMIT_SOFT|LIMIT_HARD : mode, RLIM_INFINITY)); + } + #endif print_all_limits (mode == 0 ? LIMIT_SOFT : mode); return (EXECUTION_SUCCESS); *************** *** 348,353 **** { int opt, limind, setting; ! long block_factor; ! RLIMTYPE current_limit, real_limit, limit; setting = cmdarg != 0; --- 373,378 ---- { int opt, limind, setting; ! int block_factor; ! RLIMTYPE soft_limit, hard_limit, real_limit, limit; setting = cmdarg != 0; *************** *** 355,362 **** if (mode == 0) mode = setting ? (LIMIT_HARD|LIMIT_SOFT) : LIMIT_SOFT; ! opt = get_limit (limind, mode, ¤t_limit); if (opt < 0) { ! builtin_error ("cannot get limit: %s", strerror (errno)); return (EXECUTION_FAILURE); } --- 380,388 ---- if (mode == 0) mode = setting ? (LIMIT_HARD|LIMIT_SOFT) : LIMIT_SOFT; ! opt = get_limit (limind, &soft_limit, &hard_limit); if (opt < 0) { ! builtin_error ("cannot get %s limit: %s", limits[limind].description, ! strerror (errno)); return (EXECUTION_FAILURE); } *************** *** 364,388 **** if (setting == 0) /* print the value of the specified limit */ { ! printone (limind, current_limit, multiple); return (EXECUTION_SUCCESS); } /* Setting the limit. */ ! if (STREQ (cmdarg, "unlimited")) ! limit = RLIM_INFINITY; else if (all_digits (cmdarg)) - limit = string_to_rlimtype (cmdarg); - else { ! builtin_error ("bad non-numeric arg `%s'", cmdarg); ! return (EXECUTION_FAILURE); ! } ! block_factor = (limit == RLIM_INFINITY) ? 1 : limits[limind].block_factor; ! real_limit = limit * block_factor; ! ! if (real_limit < 0 || (real_limit == 0 && limit != 0)) { ! builtin_error ("limit out of range: %d", limit); return (EXECUTION_FAILURE); } --- 390,419 ---- if (setting == 0) /* print the value of the specified limit */ { ! printone (limind, (mode & LIMIT_SOFT) ? soft_limit : hard_limit, multiple); return (EXECUTION_SUCCESS); } /* Setting the limit. */ ! if (STREQ (cmdarg, "hard")) ! real_limit = hard_limit; ! else if (STREQ (cmdarg, "soft")) ! real_limit = soft_limit; ! else if (STREQ (cmdarg, "unlimited")) ! real_limit = RLIM_INFINITY; else if (all_digits (cmdarg)) { ! limit = string_to_rlimtype (cmdarg); ! block_factor = limits[limind].block_factor; ! real_limit = limit * block_factor; ! if ((real_limit / block_factor) != limit) ! { ! builtin_error ("limit out of range: %s", cmdarg); ! return (EXECUTION_FAILURE); ! } ! } ! else { ! builtin_error ("bad non-numeric arg `%s'", cmdarg); return (EXECUTION_FAILURE); } *************** *** 390,403 **** if (set_limit (limind, real_limit, mode) < 0) { ! builtin_error ("cannot modify limit: %s", strerror (errno)); return (EXECUTION_FAILURE); } return (EXECUTION_SUCCESS); } static int ! get_limit (ind, mode, limptr) ! int ind, mode; ! RLIMTYPE *limptr; { RLIMTYPE value; --- 421,436 ---- if (set_limit (limind, real_limit, mode) < 0) { ! builtin_error ("cannot modify %s limit: %s", limits[limind].description, ! strerror (errno)); return (EXECUTION_FAILURE); } + return (EXECUTION_SUCCESS); } static int ! get_limit (ind, softlim, hardlim) ! int ind; ! RLIMTYPE *softlim, *hardlim; { RLIMTYPE value; *************** *** 422,430 **** break; case RLIMIT_VIRTMEM: ! if (getmaxvm (mode, &value) < 0) ! return -1; ! break; case RLIMIT_MAXUPROC: ! if (getmaxuprc (mode, &value) < 0) return -1; break; --- 455,461 ---- break; case RLIMIT_VIRTMEM: ! return (getmaxvm (softlim, hardlim)); case RLIMIT_MAXUPROC: ! if (getmaxuprc (&value) < 0) return -1; break; *************** *** 433,437 **** return -1; } ! *limptr = value; return (0); } --- 464,468 ---- return -1; } ! *softlim = *hardlim = value; return (0); } *************** *** 441,451 **** if (getrlimit (limits[ind].parameter, &limit) < 0) return -1; ! value = (mode & LIMIT_SOFT) ? limit.rlim_cur : limit.rlim_max; # if defined (HPUX9) if (limits[ind].parameter == RLIMIT_FILESIZE) ! *limptr = value * 512; /* Ugh. */ else # endif /* HPUX9 */ - *limptr = value; return 0; #else --- 472,485 ---- if (getrlimit (limits[ind].parameter, &limit) < 0) return -1; ! *softlim = limit.rlim_cur; ! *hardlim = limit.rlim_max; # if defined (HPUX9) if (limits[ind].parameter == RLIMIT_FILESIZE) ! { ! *softlim *= 512; ! *hardlim *= 512; /* Ugh. */ ! } else # endif /* HPUX9 */ return 0; #else *************** *** 522,545 **** static int ! getmaxvm (mode, valuep) ! int mode; ! RLIMTYPE *valuep; { #if defined (HAVE_RESOURCE) ! struct rlimit rl; ! RLIMTYPE maxdata, maxstack; ! if (getrlimit (RLIMIT_DATA, &rl) < 0) return -1; - else - maxdata = (mode & LIMIT_SOFT) ? rl.rlim_cur : rl.rlim_max; ! if (getrlimit (RLIMIT_STACK, &rl) < 0) return -1; - else - maxstack = (mode & LIMIT_SOFT) ? rl.rlim_cur : rl.rlim_max; /* Protect against overflow. */ ! *valuep = (maxdata / 1024L) + (maxstack / 1024L); return 0; #else --- 556,574 ---- static int ! getmaxvm (softlim, hardlim) ! RLIMTYPE *softlim, *hardlim; { #if defined (HAVE_RESOURCE) ! struct rlimit datalim, stacklim; ! if (getrlimit (RLIMIT_DATA, &datalim) < 0) return -1; ! if (getrlimit (RLIMIT_STACK, &stacklim) < 0) return -1; /* Protect against overflow. */ ! *softlim = (datalim.rlim_cur / 1024L) + (stacklim.rlim_cur / 1024L); ! *hardlim = (datalim.rlim_max / 1024L) + (stacklim.rlim_max / 1024L); return 0; #else *************** *** 558,566 **** return -1; else ! # if 0 ! *valuep = (RLIMTYPE) result; ! # else ! *valuep = (RLIMTYPE) result * 512L; ! # endif return 0; #else --- 587,591 ---- return -1; else ! *valuep = (RLIMTYPE) result * 512; return 0; #else *************** *** 591,596 **** static int ! getmaxuprc (mode, valuep) ! int mode; RLIMTYPE *valuep; { --- 616,620 ---- static int ! getmaxuprc (valuep) RLIMTYPE *valuep; { *************** *** 619,623 **** { register int i; ! RLIMTYPE value; if (mode == 0) --- 643,647 ---- { register int i; ! RLIMTYPE softlim, hardlim; if (mode == 0) *************** *** 626,636 **** for (i = 0; limits[i].option > 0; i++) { ! if (get_limit (i, mode, &value) < 0) ! { ! fprintf (stderr, DESCFMT, limits[i].description); ! builtin_error ("cannot get limit: %s", strerror (errno)); ! } else ! printone (i, value, 1); } } --- 650,657 ---- for (i = 0; limits[i].option > 0; i++) { ! if (get_limit (i, &softlim, &hardlim) < 0) ! builtin_error ("cannot get %s limit: %s", limits[i].description, strerror (errno)); else ! printone (i, (mode & LIMIT_SOFT) ? softlim : hardlim, 1); } } *************** *** 642,651 **** int pdesc; { if (pdesc) ! printf (DESCFMT, limits[limind].description); if (curlim == RLIM_INFINITY) puts ("unlimited"); else print_rlimtype ((curlim / limits[limind].block_factor), 1); } #endif /* !_MINIX */ --- 663,726 ---- int pdesc; { + char unitstr[64]; + if (pdesc) ! { ! if (limits[limind].units) ! sprintf (unitstr, "(%s, -%c) ", limits[limind].units, limits[limind].option); ! else ! sprintf (unitstr, "(-%c) ", limits[limind].option); ! ! printf ("%-18s %16s", limits[limind].description, unitstr); ! } if (curlim == RLIM_INFINITY) puts ("unlimited"); + else if (curlim == RLIM_SAVED_MAX) + puts ("hard"); + else if (curlim == RLIM_SAVED_CUR) + puts ("soft"); else print_rlimtype ((curlim / limits[limind].block_factor), 1); } + + /* Set all limits to NEWLIM. NEWLIM currently must be RLIM_INFINITY, which + causes all limits to be set as high as possible depending on mode (like + csh `unlimit'). Returns -1 if NEWLIM is invalid, 0 if all limits + were set successfully, and 1 if at least one limit could not be set. + + To raise all soft limits to their corresponding hard limits, use + ulimit -S -a unlimited + To attempt to raise all hard limits to infinity (superuser-only), use + ulimit -H -a unlimited + To attempt to raise all soft and hard limits to infinity, use + ulimit -a unlimited + */ + + static int + set_all_limits (mode, newlim) + int mode; + RLIMTYPE newlim; + { + register int i; + int retval = 0; + + if (newlim != RLIM_INFINITY) + { + errno = EINVAL; + return -1; + } + + if (mode == 0) + mode = LIMIT_SOFT|LIMIT_HARD; + + for (retval = i = 0; limits[i].option > 0; i++) + if (set_limit (i, newlim, mode) < 0) + { + builtin_error ("cannot modify %s limit: %s", limits[i].description, + strerror (errno)); + retval = 1; + } + return retval; + } + #endif /* !_MINIX */ diff -Nrc2 bash-2.05/builtins/umask.def bash-2.05a/builtins/umask.def *** bash-2.05/builtins/umask.def Wed Feb 14 17:12:26 2001 --- bash-2.05a/builtins/umask.def Thu Sep 20 15:24:53 2001 *************** *** 47,50 **** --- 47,51 ---- #include + #include #include "../shell.h" *************** *** 53,56 **** --- 54,61 ---- #include "bashgetopt.h" + #ifdef __LCC__ + #define mode_t int + #endif + /* **************************************************************** */ /* */ *************** *** 59,64 **** /* **************************************************************** */ ! static void print_symbolic_umask (); ! static int symbolic_umask (); /* Set or display the mask used by the system when creating files. Flag --- 64,69 ---- /* **************************************************************** */ ! static void print_symbolic_umask __P((mode_t)); ! static int symbolic_umask __P((WORD_LIST *)); /* Set or display the mask used by the system when creating files. Flag *************** *** 93,97 **** if (list) { ! if (digit (*list->word->word)) { umask_value = read_octal (list->word->word); --- 98,102 ---- if (list) { ! if (DIGIT (*list->word->word)) { umask_value = read_octal (list->word->word); *************** *** 129,133 **** print_symbolic_umask (umask_arg); else ! printf ("%03o\n", umask_arg); } --- 134,138 ---- print_symbolic_umask (umask_arg); else ! printf ("%04lo\n", (unsigned long)umask_arg); } *************** *** 180,189 **** int initial_bits; { ! int who, op, perm, mask, bits, c; char *s; for (s = mode, bits = initial_bits;;) { ! who = op = perm = mask = 0; /* Parse the `who' portion of the symbolic mode clause. */ --- 185,194 ---- int initial_bits; { ! int who, op, perm, bits, c; char *s; for (s = mode, bits = initial_bits;;) { ! who = op = perm = 0; /* Parse the `who' portion of the symbolic mode clause. */ diff -Nrc2 bash-2.05/builtins/wait.def bash-2.05a/builtins/wait.def *** bash-2.05/builtins/wait.def Wed Jan 17 15:40:08 2001 --- bash-2.05a/builtins/wait.def Mon Oct 29 13:45:52 2001 *************** *** 51,54 **** --- 51,56 ---- #endif + #include + #include "../bashansi.h" *************** *** 82,85 **** --- 84,89 ---- volatile int old_interrupt_immediately; + USE_VAR(list); + if (no_options (list)) return (EX_USAGE); *************** *** 121,131 **** pid_t pid; char *w; w = list->word->word; ! if (digit (*w)) { ! if (all_digits (w + 1)) { ! pid = (pid_t)atoi (w); status = wait_for_single_pid (pid); } --- 125,136 ---- pid_t pid; char *w; + long pid_value; w = list->word->word; ! if (DIGIT (*w)) { ! if (legal_number (w, &pid_value) && pid_value == (pid_t)pid_value) { ! pid = (pid_t)pid_value; status = wait_for_single_pid (pid); } diff -Nrc2 bash-2.05/builtins.h bash-2.05a/builtins.h *** bash-2.05/builtins.h Thu Aug 5 07:18:12 1999 --- bash-2.05a/builtins.h Tue Aug 28 12:42:53 2001 *************** *** 45,49 **** struct builtin { char *name; /* The name that the user types. */ ! Function *function; /* The address of the invoked function. */ int flags; /* One of the #defines above. */ char **long_doc; /* NULL terminated array of strings. */ --- 45,49 ---- struct builtin { char *name; /* The name that the user types. */ ! sh_builtin_func_t *function; /* The address of the invoked function. */ int flags; /* One of the #defines above. */ char **long_doc; /* NULL terminated array of strings. */ diff -Nrc2 bash-2.05/command.h bash-2.05a/command.h *** bash-2.05/command.h Thu Oct 5 15:31:17 2000 --- bash-2.05a/command.h Wed May 9 08:52:36 2001 *************** *** 96,107 **** /* **************************************************************** */ ! /* What a redirection descriptor looks like. If FLAGS is IS_DESCRIPTOR, ! then we use REDIRECTEE.DEST, else we use the file specified. */ typedef union { ! long dest; /* Place to redirect REDIRECTOR to, or ... */ WORD_DESC *filename; /* filename to redirect to. */ } REDIRECTEE; typedef struct redirect { struct redirect *next; /* Next element, or NULL. */ --- 96,111 ---- /* **************************************************************** */ ! /* What a redirection descriptor looks like. If the redirection instruction ! is ri_duplicating_input or ri_duplicating_output, use DEST, otherwise ! use the file in FILENAME. Out-of-range descriptors are identified by a ! negative DEST. */ typedef union { ! int dest; /* Place to redirect REDIRECTOR to, or ... */ WORD_DESC *filename; /* filename to redirect to. */ } REDIRECTEE; + /* Structure describing a redirection. If REDIRECTOR is negative, the parser + (or translator in redir.c) encountered an out-of-range file descriptor. */ typedef struct redirect { struct redirect *next; /* Next element, or NULL. */ *************** *** 132,135 **** --- 136,140 ---- #define CMD_AMPERSAND 0x200 /* command & */ #define CMD_STDIN_REDIR 0x400 /* async command needs implicit doesn't define. */ #undef off_t --- 219,222 ---- *************** *** 205,211 **** #undef bits64_t - /* Define to `int' if doesn't define. */ - #undef ptrdiff_t - /* Define to `unsigned int' if doesn't define. */ #undef u_int --- 246,249 ---- *************** *** 214,220 **** --- 252,270 ---- #undef u_long + /* Define to `int' if doesn't define. */ + #undef ptrdiff_t + /* Define to `unsigned' if doesn't define. */ #undef size_t + /* Define to `int' if doesn't define. */ + #undef ssize_t + + /* Define to `long' if doesn't define. */ + #undef intmax_t + + /* Define to `unsigned long' if doesn't define. */ + #undef uintmax_t + /* Define to `int' if doesn't define. */ #undef uid_t *************** *** 229,232 **** --- 279,285 ---- #undef gid_t + /* Define to `unsigned int' if doesn't define. */ + #undef socklen_t + /* Define if you have quad_t in . */ #undef HAVE_QUAD_T *************** *** 238,248 **** #undef GETGROUPS_T - /* Define if the system does not provide POSIX.1 features except - with this defined. */ - #undef _POSIX_1_SOURCE - - /* Define if you need to in order for stat and other things to work. */ - #undef _POSIX_SOURCE - /* Characteristics of the machine archictecture. */ --- 291,294 ---- *************** *** 259,265 **** #undef WORDS_BIGENDIAN - /* Define if you have the ANSI C header files. */ - #undef STDC_HEADERS - /* Check for the presence of certain non-function symbols in the system libraries. */ --- 305,308 ---- *************** *** 302,305 **** --- 345,349 ---- #undef TERMIO_LDISC + #undef HAVE_STRUCT_STAT_ST_BLOCKS /* Characteristics of definitions in the system header files. */ *************** *** 309,315 **** #undef HAVE_RESOURCE ! #undef SBRK_DECLARED ! #undef PRINTF_DECLARED /* Characteristics of system calls and C library functions. */ --- 353,376 ---- #undef HAVE_RESOURCE ! #undef HAVE_LIBC_FNM_EXTMATCH ! ! #undef HAVE_DECL_CONFSTR ! ! #undef HAVE_DECL_STRTOLD ! ! #undef HAVE_DECL_SBRK ! ! #undef HAVE_DECL_PRINTF ! ! #undef HAVE_DECL_STRSIGNAL ! ! /* These are checked with BASH_CHECK_DECL */ ! #undef HAVE_DECL_STRTOIMAX ! #undef HAVE_DECL_STRTOL ! #undef HAVE_DECL_STRTOLL ! #undef HAVE_DECL_STRTOUL ! #undef HAVE_DECL_STRTOULL ! #undef HAVE_DECL_STRTOUMAX /* Characteristics of system calls and C library functions. */ *************** *** 335,338 **** --- 396,400 ---- #undef CAN_REDEFINE_GETENV + #undef HAVE_PRINTF_A_FORMAT /* Characteristics of properties exported by the kernel. */ *************** *** 361,368 **** #undef MUST_REINSTALL_SIGHANDLERS - /* Define if system calls automatically restart after interruption - by a signal. */ - #undef HAVE_RESTARTABLE_SYSCALLS - #undef HAVE_BSD_SIGNALS --- 423,426 ---- *************** *** 376,379 **** --- 434,440 ---- /* Presence of system and C library functions. */ + /* Define if you have the asprintf function. */ + #undef HAVE_ASPRINTF + /* Define if you have the bcopy function. */ #undef HAVE_BCOPY *************** *** 403,406 **** --- 464,470 ---- #undef HAVE_DUP2 + /* Define if you have the getaddrinfo function. */ + #undef HAVE_GETADDRINFO + /* Define if you have the getcwd function. */ #undef HAVE_GETCWD *************** *** 445,448 **** --- 509,530 ---- #undef HAVE_INET_ATON + /* Define if you have the isascii function. */ + #undef HAVE_ISASCII + + /* Define if you have the isblank function. */ + #undef HAVE_ISBLANK + + /* Define if you have the isgraph function. */ + #undef HAVE_ISGRAPH + + /* Define if you have the isprint function. */ + #undef HAVE_ISPRINT + + /* Define if you have the isspace function. */ + #undef HAVE_ISSPACE + + /* Define if you have the isxdigit function. */ + #undef HAVE_ISXDIGIT + /* Define if you have the killpg function. */ #undef HAVE_KILLPG *************** *** 499,502 **** --- 581,587 ---- #undef HAVE_POSIX_SIGSETJMP + /* Define if you have the snprintf function. */ + #undef HAVE_SNPRINTF + /* Define if you have the strcasecmp function. */ #undef HAVE_STRCASECMP *************** *** 517,526 **** --- 602,623 ---- #undef HAVE_STRTOD + /* Define if you have the strtoimax function. */ + #undef HAVE_STRTOIMAX + /* Define if you have the strtol function. */ #undef HAVE_STRTOL + /* Define if you have the strtoll function. */ + #undef HAVE_STRTOLL + /* Define if you have the strtoul function. */ #undef HAVE_STRTOUL + /* Define if you have the strtoull function. */ + #undef HAVE_STRTOULL + + /* Define if you have the strtoumax function. */ + #undef HAVE_STRTOUMAX + /* Define if you have the strsignal function or macro. */ #undef HAVE_STRSIGNAL *************** *** 553,559 **** --- 650,662 ---- #undef HAVE_UNAME + /* Define if you have the vasprintf function. */ + #undef HAVE_VASPRINTF + /* Define if you have the vprintf function. */ #undef HAVE_VPRINTF + /* Define if you have the vsnprintf function. */ + #undef HAVE_VSNPRINTF + /* Define if you have the waitpid function. */ #undef HAVE_WAITPID *************** *** 562,566 **** #undef HAVE_WAIT3 - /* Presence of certain system include files. */ --- 665,668 ---- *************** *** 574,577 **** --- 676,685 ---- #undef HAVE_DLFCN_H + /* Define if you have the header file. */ + #undef HAVE_GRP_H + + /* Define if you have the header file. */ + #undef HAVE_INTTYPES_H + /* Define if you have the header file. */ #undef HAVE_LIBINTL_H *************** *** 601,604 **** --- 709,715 ---- #undef HAVE_STRING_H + /* Define if you have the header file. */ + #undef HAVE_STRINGS_H + /* Define if you have the header file. */ #undef HAVE_MEMORY_H *************** *** 607,610 **** --- 718,724 ---- #undef HAVE_STDDEF_H + /* Define if you have the header file. */ + #undef HAVE_STDINT_H + /* Define if you have the header file. */ #undef HAVE_SYS_DIR_H *************** *** 690,693 **** --- 804,813 ---- ? */ #undef RLIMIT_NEEDS_KERNEL + + /* Number of bits in a file offset, on hosts where this is settable. */ + #undef _FILE_OFFSET_BITS + + /* Define for large files on AIX-style hosts. */ + #undef _LARGE_FILES /* Do strcoll(3) and strcmp(3) give different results in the default locale? */ diff -Nrc2 bash-2.05/configure bash-2.05a/configure *** bash-2.05/configure Tue Jan 23 12:57:28 2001 --- bash-2.05a/configure Mon Nov 12 06:53:01 2001 *************** *** 1,196 **** #! /bin/sh ! # From configure.in for Bash 2.05, version 2.90, from autoconf version 2.13 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! - # Guess values for system-dependent variables and create Makefiles. - # Generated automatically using autoconf version 2.13 - # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # ! # This configure script is free software; the Free Software Foundation ! # gives unlimited permission to copy, distribute and modify it. ! ! # Defaults: ! ac_help= ac_default_prefix=/usr/local ! # Any additions from configure.in: ! ac_help="$ac_help ! --with-afs if you are running AFS" ! ac_help="$ac_help ! --with-bash-malloc use the Bash version of malloc" ! ac_help="$ac_help ! --with-curses use the curses library instead of the termcap library" ! ac_help="$ac_help ! --with-glibc-malloc use the GNU C library version of malloc" ! ac_help="$ac_help ! --with-gnu-malloc synonym for --with-bash-malloc" ! ac_help="$ac_help ! --with-installed-readline use a version of the readline library that is already installed" ! ac_help="$ac_help ! --with-purecov configure to postprocess with pure coverage" ! ac_help="$ac_help ! --with-purify configure to postprocess with purify" ! ac_help="$ac_help ! --enable-minimal-config a minimal sh-like configuration" ! ac_help="$ac_help ! --enable-alias enable shell aliases" ! ac_help="$ac_help ! --enable-arith-for-command enable arithmetic for command" ! ac_help="$ac_help ! --enable-array-variables include shell array variables" ! ac_help="$ac_help ! --enable-bang-history turn on csh-style history substitution" ! ac_help="$ac_help ! --enable-brace-expansion include brace expansion" ! ac_help="$ac_help ! --enable-command-timing enable the time reserved word and command timing" ! ac_help="$ac_help ! --enable-cond-command enable the conditional command" ! ac_help="$ac_help ! --enable-directory-stack enable builtins pushd/popd/dirs" ! ac_help="$ac_help ! --enable-disabled-builtins allow disabled builtins to still be invoked" ! ac_help="$ac_help ! --enable-dparen-arithmetic include ((...)) command" ! ac_help="$ac_help ! --enable-extended-glob include ksh-style extended pattern matching" ! ac_help="$ac_help ! --enable-help-builtin include the help builtin" ! ac_help="$ac_help ! --enable-history turn on command history" ! ac_help="$ac_help ! --enable-job-control enable job control features" ! ac_help="$ac_help ! --enable-net-redirections enable /dev/tcp/host/port redirection" ! ac_help="$ac_help ! --enable-process-substitution enable process substitution" ! ac_help="$ac_help ! --enable-progcomp enable programmable completion and the complete builtin" ! ac_help="$ac_help ! --enable-prompt-string-decoding turn on escape character decoding in prompts" ! ac_help="$ac_help ! --enable-readline turn on command line editing" ! ac_help="$ac_help ! --enable-restricted enable a restricted shell" ! ac_help="$ac_help ! --enable-select include select command" ! ac_help="$ac_help ! --enable-usg-echo-default a synonym for --enable-xpg-echo-default" ! ac_help="$ac_help ! --enable-xpg-echo-default make the echo builtin expand escape sequences by default" ! ac_help="$ac_help ! --enable-profiling allow profiling with gprof" ! ac_help="$ac_help ! --enable-static-link link bash statically, for use as a root shell" # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. ! build=NONE ! cache_file=./config.cache exec_prefix=NONE - host=NONE no_create= - nonopt=NONE no_recursion= prefix=NONE --- 1,157 ---- #! /bin/sh + # From configure.in for Bash 2.05a, version 2.128, from autoconf version 2.52. + # Guess values for system-dependent variables and create Makefiles. + # Generated by Autoconf 2.52 for bash 2.05a. + # + # Report bugs to . + # + # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 + # Free Software Foundation, Inc. + # This configure script is free software; the Free Software Foundation + # gives unlimited permission to copy, distribute and modify it. ! # Avoid depending upon Character Ranges. ! as_cr_letters='abcdefghijklmnopqrstuvwxyz' ! as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ! as_cr_Letters=$as_cr_letters$as_cr_LETTERS ! as_cr_digits='0123456789' ! as_cr_alnum=$as_cr_Letters$as_cr_digits ! ! # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" ! ! # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" ! ! # Be Bourne compatible ! if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ! emulate sh ! NULLCMD=: ! elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then ! set -o posix ! fi ! ! # Name of the executable. ! as_me=`echo "$0" |sed 's,.*[\\/],,'` ! ! if expr a : '\(a\)' >/dev/null 2>&1; then ! as_expr=expr ! else ! as_expr=false ! fi ! ! rm -f conf$$ conf$$.exe conf$$.file ! echo >conf$$.file ! if ln -s conf$$.file conf$$ 2>/dev/null; then ! # We could just check for DJGPP; but this test a) works b) is more generic ! # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). ! if test -f conf$$.exe; then ! # Don't use ln at all; we don't have any links ! as_ln_s='cp -p' ! else ! as_ln_s='ln -s' ! fi ! elif ln conf$$.file conf$$ 2>/dev/null; then ! as_ln_s=ln ! else ! as_ln_s='cp -p' ! fi ! rm -f conf$$ conf$$.exe conf$$.file + as_executable_p="test -f" + # Support unset when possible. + if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset + else + as_unset=false + fi + # NLS nuisances. + $as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } + $as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } + $as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } + $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } + $as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } + $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } + $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } + $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + + # IFS + # We need space, tab and new line, in precisely that order. + as_nl=' + ' + IFS=" $as_nl" + + # CDPATH. + $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + + # Name of the host. + # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + exec 6>&1 # ! # Initializations. ! # ac_default_prefix=/usr/local ! cross_compiling=no ! subdirs= ! MFLAGS= MAKEFLAGS= ! SHELL=${CONFIG_SHELL-/bin/sh} ! ! # Maximum number of lines to put in a shell here document. ! # This variable seems obsolete. It should probably be removed, and ! # only ac_max_sed_lines should be used. ! : ${ac_max_here_lines=38} ! ! ac_unique_file="shell.h" ! # Factoring default headers for most tests. ! ac_includes_default="\ ! #include ! #if HAVE_SYS_TYPES_H ! # include ! #endif ! #if HAVE_SYS_STAT_H ! # include ! #endif ! #if STDC_HEADERS ! # include ! # include ! #else ! # if HAVE_STDLIB_H ! # include ! # endif ! #endif ! #if HAVE_STRING_H ! # if !STDC_HEADERS && HAVE_MEMORY_H ! # include ! # endif ! # include ! #endif ! #if HAVE_STRINGS_H ! # include ! #endif ! #if HAVE_INTTYPES_H ! # include ! #else ! # if HAVE_STDINT_H ! # include ! # endif ! #endif ! #if HAVE_UNISTD_H ! # include ! #endif" # Initialize some variables set by options. + ac_init_help= + ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. ! cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE *************** *** 201,208 **** site= srcdir= - target=NONE verbose= x_includes=NONE x_libraries=NONE bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' --- 162,174 ---- site= srcdir= verbose= x_includes=NONE x_libraries=NONE + + # Installation directory options. + # These are left unexpanded so users can "make install exec_prefix=/foo" + # and all the variables that are supposed to be based on exec_prefix + # by default will actually change. + # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' *************** *** 218,232 **** mandir='${prefix}/man' ! # Initialize some other variables. ! subdirs= ! MFLAGS= MAKEFLAGS= ! SHELL=${CONFIG_SHELL-/bin/sh} ! # Maximum number of lines to put in a shell here document. ! ac_max_here_lines=12 ac_prev= for ac_option do - # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then --- 184,197 ---- mandir='${prefix}/man' ! # Identity of this package. ! PACKAGE_NAME='bash' ! PACKAGE_TARNAME='bash' ! PACKAGE_VERSION='2.05a' ! PACKAGE_STRING='bash 2.05a' ! PACKAGE_BUGREPORT='bug-bash@gnu.org' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then *************** *** 236,257 **** fi ! case "$ac_option" in ! -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; ! *) ac_optarg= ;; ! esac # Accept the important Cygnus configure options, so we can diagnose typos. ! case "$ac_option" in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ! bindir="$ac_optarg" ;; -build | --build | --buil | --bui | --bu) ! ac_prev=build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) ! build="$ac_optarg" ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ --- 201,219 ---- fi ! ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. ! case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ! bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ! ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) ! build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ *************** *** 260,264 **** -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) ! cache_file="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) --- 222,229 ---- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) ! cache_file=$ac_optarg ;; ! ! --config-cache | -C) ! cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) *************** *** 266,292 **** -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) ! datadir="$ac_optarg" ;; -disable-* | --disable-*) ! ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. ! if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then ! { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } ! fi ! ac_feature=`echo $ac_feature| sed 's/-/_/g'` ! eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) ! ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. ! if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then ! { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } ! fi ! ac_feature=`echo $ac_feature| sed 's/-/_/g'` ! case "$ac_option" in ! *=*) ;; *) ac_optarg=yes ;; esac ! eval "enable_${ac_feature}='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ --- 231,257 ---- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) ! datadir=$ac_optarg ;; -disable-* | --disable-*) ! ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. ! expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ! { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ! { (exit 1); exit 1; }; } ! ac_feature=`echo $ac_feature | sed 's/-/_/g'` ! eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ! ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. ! expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ! { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ! { (exit 1); exit 1; }; } ! ac_feature=`echo $ac_feature | sed 's/-/_/g'` ! case $ac_option in ! *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac ! eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ *************** *** 297,301 **** | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) ! exec_prefix="$ac_optarg" ;; -gas | --gas | --ga | --g) --- 262,266 ---- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) ! exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) *************** *** 303,365 **** with_gas=yes ;; ! -help | --help | --hel | --he) ! # Omit some internal or obsolete options to make the list less imposing. ! # This message is too long to be a string in the A/UX 3.1 sh. ! cat << EOF ! Usage: configure [options] [host] ! Options: [defaults in brackets after descriptions] ! Configuration: ! --cache-file=FILE cache test results in FILE ! --help print this message ! --no-create do not create output files ! --quiet, --silent do not print \`checking...' messages ! --version print the version of autoconf that created configure ! Directory and file names: ! --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] ! --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [same as prefix] ! --bindir=DIR user executables in DIR [EPREFIX/bin] ! --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] ! --libexecdir=DIR program executables in DIR [EPREFIX/libexec] ! --datadir=DIR read-only architecture-independent data in DIR ! [PREFIX/share] ! --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] ! --sharedstatedir=DIR modifiable architecture-independent data in DIR ! [PREFIX/com] ! --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] ! --libdir=DIR object code libraries in DIR [EPREFIX/lib] ! --includedir=DIR C header files in DIR [PREFIX/include] ! --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] ! --infodir=DIR info documentation in DIR [PREFIX/info] ! --mandir=DIR man documentation in DIR [PREFIX/man] ! --srcdir=DIR find the sources in DIR [configure dir or ..] ! --program-prefix=PREFIX prepend PREFIX to installed program names ! --program-suffix=SUFFIX append SUFFIX to installed program names ! --program-transform-name=PROGRAM ! run sed PROGRAM on installed program names ! EOF ! cat << EOF ! Host type: ! --build=BUILD configure for building on BUILD [BUILD=HOST] ! --host=HOST configure for HOST [guessed] ! --target=TARGET configure for TARGET [TARGET=HOST] ! Features and packages: ! --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) ! --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ! --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] ! --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ! --x-includes=DIR X include files are in DIR ! --x-libraries=DIR X library files are in DIR ! EOF ! if test -n "$ac_help"; then ! echo "--enable and --with options recognized:$ac_help" ! fi ! exit 0 ;; -host | --host | --hos | --ho) ! ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) ! host="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ --- 268,282 ---- with_gas=yes ;; ! -help | --help | --hel | --he | -h) ! ac_init_help=long ;; ! -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ! ac_init_help=recursive ;; ! -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ! ac_init_help=short ;; -host | --host | --hos | --ho) ! ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) ! host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ *************** *** 368,382 **** -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) ! includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) ! infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) ! libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ --- 285,299 ---- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) ! includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) ! infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) ! libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ *************** *** 385,389 **** -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) ! libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ --- 302,306 ---- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) ! libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ *************** *** 394,403 **** | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ! localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) ! mandir="$ac_optarg" ;; -nfp | --nfp | --nf) --- 311,320 ---- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ! localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) ! mandir=$ac_optarg ;; -nfp | --nfp | --nf) *************** *** 420,429 **** | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) ! oldincludedir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ! prefix="$ac_optarg" ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ --- 337,346 ---- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) ! oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ! prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ *************** *** 432,436 **** -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ! program_prefix="$ac_optarg" ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ --- 349,353 ---- -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ! program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ *************** *** 439,443 **** -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ! program_suffix="$ac_optarg" ;; -program-transform-name | --program-transform-name \ --- 356,360 ---- -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ! program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ *************** *** 456,460 **** | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) ! program_transform_name="$ac_optarg" ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ --- 373,377 ---- | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) ! program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ *************** *** 466,470 **** -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) ! sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ --- 383,387 ---- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) ! sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ *************** *** 477,491 **** | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) ! sharedstatedir="$ac_optarg" ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) ! site="$ac_optarg" ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ! srcdir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ --- 394,408 ---- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) ! sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) ! site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ! srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ *************** *** 494,532 **** -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) ! sysconfdir="$ac_optarg" ;; -target | --target | --targe | --targ | --tar | --ta | --t) ! ac_prev=target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) ! target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; ! -version | --version | --versio | --versi | --vers) ! echo "configure generated by autoconf version 2.13" ! exit 0 ;; -with-* | --with-*) ! ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. ! if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then ! { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } ! fi ac_package=`echo $ac_package| sed 's/-/_/g'` ! case "$ac_option" in ! *=*) ;; *) ac_optarg=yes ;; esac ! eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) ! ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. ! if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then ! { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } ! fi ! ac_package=`echo $ac_package| sed 's/-/_/g'` ! eval "with_${ac_package}=no" ;; --x) --- 411,448 ---- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) ! sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ! ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) ! target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; ! -version | --version | --versio | --versi | --vers | -V) ! ac_init_version=: ;; -with-* | --with-*) ! ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. ! expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ! { echo "$as_me: error: invalid package name: $ac_package" >&2 ! { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` ! case $ac_option in ! *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac ! eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ! ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. ! expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ! { echo "$as_me: error: invalid package name: $ac_package" >&2 ! { (exit 1); exit 1; }; } ! ac_package=`echo $ac_package | sed 's/-/_/g'` ! eval "with_$ac_package=no" ;; --x) *************** *** 539,543 **** -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) ! x_includes="$ac_optarg" ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ --- 455,459 ---- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) ! x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ *************** *** 546,562 **** -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) ! x_libraries="$ac_optarg" ;; ! -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; *) ! if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then ! echo "configure: warning: $ac_option: invalid host type" 1>&2 ! fi ! if test "x$nonopt" != xNONE; then ! { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ! fi ! nonopt="$ac_option" ;; --- 462,488 ---- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) ! x_libraries=$ac_optarg ;; ! -*) { echo "$as_me: error: unrecognized option: $ac_option ! Try \`$0 --help' for more information." >&2 ! { (exit 1); exit 1; }; } ;; + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + *) ! # FIXME: should be removed in autoconf 3.0. ! echo "$as_me: WARNING: you should use --build, --host, --target" >&2 ! expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && ! echo "$as_me: WARNING: invalid host type: $ac_option" >&2 ! : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; *************** *** 565,627 **** if test -n "$ac_prev"; then ! { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi ! trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 ! ! # File descriptor usage: ! # 0 standard input ! # 1 file creation ! # 2 errors and warnings ! # 3 some systems may open it to /dev/tty ! # 4 used on the Kubota Titan ! # 6 checking for... messages and results ! # 5 compiler messages saved in config.log ! if test "$silent" = yes; then ! exec 6>/dev/null ! else ! exec 6>&1 ! fi ! exec 5>./config.log ! ! echo "\ ! This file contains any messages produced by compilers while ! running configure, to aid debugging if configure makes a mistake. ! " 1>&5 ! # Strip out --no-create and --no-recursion so they do not pile up. ! # Also quote any args containing shell metacharacters. ! ac_configure_args= ! for ac_arg do ! case "$ac_arg" in ! -no-create | --no-create | --no-creat | --no-crea | --no-cre \ ! | --no-cr | --no-c) ;; ! -no-recursion | --no-recursion | --no-recursio | --no-recursi \ ! | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; ! *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ! ac_configure_args="$ac_configure_args '$ac_arg'" ;; ! *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done ! # NLS nuisances. ! # Only set these to C if already set. These must not be set unconditionally ! # because not all systems understand e.g. LANG=C (notably SCO). ! # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! ! # Non-C LC_CTYPE values break the ctype check. ! if test "${LANG+set}" = set; then LANG=C; export LANG; fi ! if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi ! if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi ! if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi ! # confdefs.h avoids OS command line length limits that DEFS can exceed. ! rm -rf conftest* confdefs.h ! # AIX cpp loses on an empty file, so make sure it contains at least a newline. ! echo > confdefs.h ! # A filename unique to this package, relative to the directory that ! # configure is in, which we can look for to find out if srcdir is correct. ! ac_unique_file=shell.h # Find the source files, if location was not specified. --- 491,543 ---- if test -n "$ac_prev"; then ! ac_option=--`echo $ac_prev | sed 's/_/-/g'` ! { echo "$as_me: error: missing argument to $ac_option" >&2 ! { (exit 1); exit 1; }; } fi ! # Be sure to have absolute paths. ! for ac_var in exec_prefix prefix ! do ! eval ac_val=$`echo $ac_var` ! case $ac_val in ! [\\/$]* | ?:[\\/]* | NONE | '' ) ;; ! *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 ! { (exit 1); exit 1; }; };; ! esac ! done ! # Be sure to have absolute paths. ! for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do ! eval ac_val=$`echo $ac_var` ! case $ac_val in ! [\\/$]* | ?:[\\/]* ) ;; ! *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 ! { (exit 1); exit 1; }; };; esac done ! # There might be people who depend on the old broken behavior: `$host' ! # used to hold the argument of --host etc. ! build=$build_alias ! host=$host_alias ! target=$target_alias ! ! # FIXME: should be removed in autoconf 3.0. ! if test "x$host_alias" != x; then ! if test "x$build_alias" = x; then ! cross_compiling=maybe ! echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. ! If a cross compiler is detected then cross compile mode will be used." >&2 ! elif test "x$build_alias" != "x$host_alias"; then ! cross_compiling=yes ! fi ! fi ! ac_tool_prefix= ! test -n "$host_alias" && ac_tool_prefix=$host_alias- ! test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. *************** *** 630,634 **** # Try the directory containing this script, then its parent. ac_prog=$0 ! ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir --- 546,550 ---- # Try the directory containing this script, then its parent. ac_prog=$0 ! ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir *************** *** 641,760 **** if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then ! { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else ! { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi ! srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` ! # Prefer explicitly selected file to automatically selected ones. ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" ! fi ! fi ! for ac_site_file in $CONFIG_SITE; do ! if test -r "$ac_site_file"; then ! echo "loading site script $ac_site_file" ! . "$ac_site_file" ! fi ! done ! if test -r "$cache_file"; then ! echo "loading cache $cache_file" ! . $cache_file ! else ! echo "creating cache $cache_file" ! > $cache_file ! fi ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ac_exeext= ! ac_objext=o ! if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then ! # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. ! if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ! ac_n= ac_c=' ! ' ac_t=' ' ! else ! ac_n=-n ac_c= ac_t= ! fi ! else ! ac_n= ac_c='\c' ac_t= ! fi ! ac_aux_dir= ! for ac_dir in ./support $srcdir/./support; do ! if test -f $ac_dir/install-sh; then ! ac_aux_dir=$ac_dir ! ac_install_sh="$ac_aux_dir/install-sh -c" ! break ! elif test -f $ac_dir/install.sh; then ! ac_aux_dir=$ac_dir ! ac_install_sh="$ac_aux_dir/install.sh -c" ! break ! fi ! done ! if test -z "$ac_aux_dir"; then ! { echo "configure: error: can not find install-sh or install.sh in ./support $srcdir/./support" 1>&2; exit 1; } fi - ac_config_guess=$ac_aux_dir/config.guess - ac_config_sub=$ac_aux_dir/config.sub - ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. ! # Make sure we can run config.sub. ! if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : ! else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi ! echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:727: checking host system type" >&5 ! host_alias=$host ! case "$host_alias" in ! NONE) ! case $nonopt in ! NONE) ! if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : ! else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } ! fi ;; ! *) host_alias=$nonopt ;; ! esac ;; ! esac ! host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` ! host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` ! host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` ! host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ! echo "$ac_t""$host" 1>&6 ! opt_bash_malloc=yes ! opt_glibc_malloc=no ! opt_purify=no ! opt_purecov=no ! opt_afs=no ! opt_curses=no ! opt_with_installed_readline=no ! #htmldir= ! case "${host_cpu}-${host_os}" in ! alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux *[Cc]ray*-*) opt_bash_malloc=no ;; # Crays *-osf1*) opt_bash_malloc=no ;; # other osf/1 machines --- 557,1105 ---- if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then ! { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 ! { (exit 1); exit 1; }; } else ! { echo "$as_me: error: cannot find sources in $srcdir" >&2 ! { (exit 1); exit 1; }; } fi fi ! srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ! ac_env_build_alias_set=${build_alias+set} ! ac_env_build_alias_value=$build_alias ! ac_cv_env_build_alias_set=${build_alias+set} ! ac_cv_env_build_alias_value=$build_alias ! ac_env_host_alias_set=${host_alias+set} ! ac_env_host_alias_value=$host_alias ! ac_cv_env_host_alias_set=${host_alias+set} ! ac_cv_env_host_alias_value=$host_alias ! ac_env_target_alias_set=${target_alias+set} ! ac_env_target_alias_value=$target_alias ! ac_cv_env_target_alias_set=${target_alias+set} ! ac_cv_env_target_alias_value=$target_alias ! ac_env_CC_set=${CC+set} ! ac_env_CC_value=$CC ! ac_cv_env_CC_set=${CC+set} ! ac_cv_env_CC_value=$CC ! ac_env_CFLAGS_set=${CFLAGS+set} ! ac_env_CFLAGS_value=$CFLAGS ! ac_cv_env_CFLAGS_set=${CFLAGS+set} ! ac_cv_env_CFLAGS_value=$CFLAGS ! ac_env_LDFLAGS_set=${LDFLAGS+set} ! ac_env_LDFLAGS_value=$LDFLAGS ! ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ! ac_cv_env_LDFLAGS_value=$LDFLAGS ! ac_env_CPPFLAGS_set=${CPPFLAGS+set} ! ac_env_CPPFLAGS_value=$CPPFLAGS ! ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ! ac_cv_env_CPPFLAGS_value=$CPPFLAGS ! ac_env_CPP_set=${CPP+set} ! ac_env_CPP_value=$CPP ! ac_cv_env_CPP_set=${CPP+set} ! ac_cv_env_CPP_value=$CPP ! # ! # Report the --help message. ! # ! if test "$ac_init_help" = "long"; then ! # Omit some internal or obsolete options to make the list less imposing. ! # This message is too long to be a string in the A/UX 3.1 sh. ! cat < if you have libraries in a ! nonstandard directory ! CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have ! headers in a nonstandard directory ! CPP C preprocessor ! ! Use these variables to override the choices made by `configure' or to help ! it to find libraries and programs with nonstandard names/locations. ! ! Report bugs to . ! EOF fi ! if test "$ac_init_help" = "recursive"; then ! # If there are subdirs, report their specific --help. ! ac_popdir=`pwd` ! for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue ! cd $ac_subdir ! # A "../" for each directory in /$ac_subdir. ! ac_dots=`echo $ac_subdir | ! sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` ! ! case $srcdir in ! .) # No --srcdir option. We are building in place. ! ac_sub_srcdir=$srcdir ;; ! [\\/]* | ?:[\\/]* ) # Absolute path. ! ac_sub_srcdir=$srcdir/$ac_subdir ;; ! *) # Relative path. ! ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; ! esac ! # Check for guested configure; otherwise get Cygnus style configure. ! if test -f $ac_sub_srcdir/configure.gnu; then ! echo ! $SHELL $ac_sub_srcdir/configure.gnu --help=recursive ! elif test -f $ac_sub_srcdir/configure; then ! echo ! $SHELL $ac_sub_srcdir/configure --help=recursive ! elif test -f $ac_sub_srcdir/configure.ac || ! test -f $ac_sub_srcdir/configure.in; then ! echo ! $ac_configure --help ! else ! echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 ! fi ! cd $ac_popdir ! done ! fi ! test -n "$ac_init_help" && exit 0 ! if $ac_init_version; then ! cat <<\EOF ! bash configure 2.05a ! generated by GNU Autoconf 2.52 ! ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 ! Free Software Foundation, Inc. ! This configure script is free software; the Free Software Foundation ! gives unlimited permission to copy, distribute and modify it. ! EOF ! exit 0 ! fi ! exec 5>config.log ! cat >&5 </dev/null | sed 1q` ! uname -m = `(uname -m) 2>/dev/null || echo unknown` ! uname -r = `(uname -r) 2>/dev/null || echo unknown` ! uname -s = `(uname -s) 2>/dev/null || echo unknown` ! uname -v = `(uname -v) 2>/dev/null || echo unknown` ! ! /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` ! /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` ! ! /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` ! /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` ! /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` ! hostinfo = `(hostinfo) 2>/dev/null || echo unknown` ! /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` ! /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` ! /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` ! ! PATH = $PATH ! ! _ASUNAME ! } >&5 ! ! cat >&5 <\?\"\']*) ! ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ! ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" ! ac_sep=" " ;; ! *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" ! ac_sep=" " ;; ! esac ! # Get rid of the leading space. ! done ! ! # When interrupted or exit'd, cleanup temporary files, and complete ! # config.log. We remove comments because anyway the quotes in there ! # would cause problems or look ugly. ! trap 'exit_status=$? ! # Save into config.log some information that might help in debugging. ! echo >&5 ! echo "## ----------------- ##" >&5 ! echo "## Cache variables. ##" >&5 ! echo "## ----------------- ##" >&5 ! echo >&5 ! # The following way of writing the cache mishandles newlines in values, ! { ! (set) 2>&1 | ! case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in ! *ac_space=\ *) ! sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ! ;; ! *) ! sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ! ;; ! esac; ! } >&5 ! sed "/^$/d" confdefs.h >conftest.log ! if test -s conftest.log; then ! echo >&5 ! echo "## ------------ ##" >&5 ! echo "## confdefs.h. ##" >&5 ! echo "## ------------ ##" >&5 ! echo >&5 ! cat conftest.log >&5 ! fi ! (echo; echo) >&5 ! test "$ac_signal" != 0 && ! echo "$as_me: caught signal $ac_signal" >&5 ! echo "$as_me: exit $exit_status" >&5 ! rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && ! exit $exit_status ! ' 0 ! for ac_signal in 1 2 13 15; do ! trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal ! done ! ac_signal=0 ! ! # confdefs.h avoids OS command line length limits that DEFS can exceed. ! rm -rf conftest* confdefs.h ! # AIX cpp loses on an empty file, so make sure it contains at least a newline. ! echo >confdefs.h ! ! # Let the site file select an alternate cache file if it wants to. ! # Prefer explicitly selected file to automatically selected ones. ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" ! fi ! fi ! for ac_site_file in $CONFIG_SITE; do ! if test -r "$ac_site_file"; then ! { echo "$as_me:910: loading site script $ac_site_file" >&5 ! echo "$as_me: loading site script $ac_site_file" >&6;} ! cat "$ac_site_file" >&5 ! . "$ac_site_file" ! fi ! done ! ! if test -r "$cache_file"; then ! # Some versions of bash will fail to source /dev/null (special ! # files actually), so we avoid doing that. ! if test -f "$cache_file"; then ! { echo "$as_me:921: loading cache $cache_file" >&5 ! echo "$as_me: loading cache $cache_file" >&6;} ! case $cache_file in ! [\\/]* | ?:[\\/]* ) . $cache_file;; ! *) . ./$cache_file;; ! esac ! fi ! else ! { echo "$as_me:929: creating cache $cache_file" >&5 ! echo "$as_me: creating cache $cache_file" >&6;} ! >$cache_file ! fi ! ! # Check that the precious variables saved in the cache have kept the same ! # value. ! ac_cache_corrupted=false ! for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ! eval ac_old_set=\$ac_cv_env_${ac_var}_set ! eval ac_new_set=\$ac_env_${ac_var}_set ! eval ac_old_val="\$ac_cv_env_${ac_var}_value" ! eval ac_new_val="\$ac_env_${ac_var}_value" ! case $ac_old_set,$ac_new_set in ! set,) ! { echo "$as_me:945: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ! echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ! ac_cache_corrupted=: ;; ! ,set) ! { echo "$as_me:949: error: \`$ac_var' was not set in the previous run" >&5 ! echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ! ac_cache_corrupted=: ;; ! ,);; ! *) ! if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:955: error: \`$ac_var' has changed since the previous run:" >&5 ! echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:957: former value: $ac_old_val" >&5 ! echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:959: current value: $ac_new_val" >&5 ! echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: ! fi;; ! esac ! # Pass precious variables to config.status. It doesn't matter if ! # we pass some twice (in addition to the command line arguments). ! if test "$ac_new_set" = set; then ! case $ac_new_val in ! *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ! ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ! ac_configure_args="$ac_configure_args '$ac_arg'" ! ;; ! *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" ! ;; ! esac ! fi ! done ! if $ac_cache_corrupted; then ! { echo "$as_me:978: error: changes in the environment can compromise the build" >&5 ! echo "$as_me: error: changes in the environment can compromise the build" >&2;} ! { { echo "$as_me:980: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 ! echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} ! { (exit 1); exit 1; }; } ! fi ! ! ac_ext=c ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu ! ! case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in ! *c*,-n*) ECHO_N= ECHO_C=' ! ' ECHO_T=' ' ;; ! *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; ! *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ! esac ! echo "#! $SHELL" >conftest.sh ! echo "exit 0" >>conftest.sh ! chmod +x conftest.sh ! if { (echo "$as_me:1000: PATH=\".;.\"; conftest.sh") >&5 ! (PATH=".;."; conftest.sh) 2>&5 ! ac_status=$? ! echo "$as_me:1003: \$? = $ac_status" >&5 ! (exit $ac_status); }; then ! ac_path_separator=';' ! else ! ac_path_separator=: ! fi ! PATH_SEPARATOR="$ac_path_separator" ! rm -f conftest.sh ! ! ac_aux_dir= ! for ac_dir in ./support $srcdir/./support; do ! if test -f $ac_dir/install-sh; then ! ac_aux_dir=$ac_dir ! ac_install_sh="$ac_aux_dir/install-sh -c" ! break ! elif test -f $ac_dir/install.sh; then ! ac_aux_dir=$ac_dir ! ac_install_sh="$ac_aux_dir/install.sh -c" ! break ! elif test -f $ac_dir/shtool; then ! ac_aux_dir=$ac_dir ! ac_install_sh="$ac_aux_dir/shtool install -c" ! break ! fi ! done ! if test -z "$ac_aux_dir"; then ! { { echo "$as_me:1029: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5 ! echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;} ! { (exit 1); exit 1; }; } ! fi ! ac_config_guess="$SHELL $ac_aux_dir/config.guess" ! ac_config_sub="$SHELL $ac_aux_dir/config.sub" ! ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ! ! ac_config_headers="$ac_config_headers config.h" ! ! BASHVERS=2.05a ! ! # Make sure we can run config.sub. ! $ac_config_sub sun4 >/dev/null 2>&1 || ! { { echo "$as_me:1043: error: cannot run $ac_config_sub" >&5 ! echo "$as_me: error: cannot run $ac_config_sub" >&2;} ! { (exit 1); exit 1; }; } ! ! echo "$as_me:1047: checking build system type" >&5 ! echo $ECHO_N "checking build system type... $ECHO_C" >&6 ! if test "${ac_cv_build+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ac_cv_build_alias=$build_alias ! test -z "$ac_cv_build_alias" && ! ac_cv_build_alias=`$ac_config_guess` ! test -z "$ac_cv_build_alias" && ! { { echo "$as_me:1056: error: cannot guess build type; you must specify one" >&5 ! echo "$as_me: error: cannot guess build type; you must specify one" >&2;} ! { (exit 1); exit 1; }; } ! ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || ! { { echo "$as_me:1060: error: $ac_config_sub $ac_cv_build_alias failed." >&5 ! echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;} ! { (exit 1); exit 1; }; } ! ! fi ! echo "$as_me:1065: result: $ac_cv_build" >&5 ! echo "${ECHO_T}$ac_cv_build" >&6 ! build=$ac_cv_build ! build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` ! build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` ! build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ! ! echo "$as_me:1072: checking host system type" >&5 ! echo $ECHO_N "checking host system type... $ECHO_C" >&6 ! if test "${ac_cv_host+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ac_cv_host_alias=$host_alias ! test -z "$ac_cv_host_alias" && ! ac_cv_host_alias=$ac_cv_build_alias ! ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || ! { { echo "$as_me:1081: error: $ac_config_sub $ac_cv_host_alias failed" >&5 ! echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ! { (exit 1); exit 1; }; } ! ! fi ! echo "$as_me:1086: result: $ac_cv_host" >&5 ! echo "${ECHO_T}$ac_cv_host" >&6 ! host=$ac_cv_host ! host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` ! host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` ! host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ! ! opt_bash_malloc=yes ! opt_purify=no ! opt_purecov=no ! opt_afs=no ! opt_curses=no ! opt_with_installed_readline=no ! ! #htmldir= ! ! case "${host_cpu}-${host_os}" in ! alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux *[Cc]ray*-*) opt_bash_malloc=no ;; # Crays *-osf1*) opt_bash_malloc=no ;; # other osf/1 machines *************** *** 765,768 **** --- 1110,1114 ---- sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF #*-freebsd*) opt_bash_malloc=no ;; # they claim it's better + *-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment *-aix*) opt_bash_malloc=no ;; # AIX machines *-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep *************** *** 783,787 **** withval="$with_afs" opt_afs=$withval ! fi # Check whether --with-bash-malloc or --without-bash-malloc was given. --- 1129,1133 ---- withval="$with_afs" opt_afs=$withval ! fi; # Check whether --with-bash-malloc or --without-bash-malloc was given. *************** *** 789,793 **** withval="$with_bash_malloc" opt_bash_malloc=$withval ! fi # Check whether --with-curses or --without-curses was given. --- 1135,1139 ---- withval="$with_bash_malloc" opt_bash_malloc=$withval ! fi; # Check whether --with-curses or --without-curses was given. *************** *** 795,805 **** withval="$with_curses" opt_curses=$withval ! fi ! ! # Check whether --with-glibc-malloc or --without-glibc-malloc was given. ! if test "${with_glibc_malloc+set}" = set; then ! withval="$with_glibc_malloc" ! opt_glibc_malloc=$withval ! fi # Check whether --with-gnu-malloc or --without-gnu-malloc was given. --- 1141,1145 ---- withval="$with_curses" opt_curses=$withval ! fi; # Check whether --with-gnu-malloc or --without-gnu-malloc was given. *************** *** 807,811 **** withval="$with_gnu_malloc" opt_bash_malloc=$withval ! fi # Check whether --with-installed-readline or --without-installed-readline was given. --- 1147,1151 ---- withval="$with_gnu_malloc" opt_bash_malloc=$withval ! fi; # Check whether --with-installed-readline or --without-installed-readline was given. *************** *** 813,817 **** withval="$with_installed_readline" opt_with_installed_readline=$withval ! fi # Check whether --with-purecov or --without-purecov was given. --- 1153,1157 ---- withval="$with_installed_readline" opt_with_installed_readline=$withval ! fi; # Check whether --with-purecov or --without-purecov was given. *************** *** 819,823 **** withval="$with_purecov" opt_purecov=$withval ! fi # Check whether --with-purify or --without-purify was given. --- 1159,1163 ---- withval="$with_purecov" opt_purecov=$withval ! fi; # Check whether --with-purify or --without-purify was given. *************** *** 825,844 **** withval="$with_purify" opt_purify=$withval ! fi ! ! if test "$opt_glibc_malloc" = yes; then ! MALLOC_TARGET=gmalloc ! MALLOC_SRC=gmalloc.c ! elif test "$opt_bash_malloc" = yes; then MALLOC_TARGET=malloc MALLOC_SRC=malloc.c ! cat >> confdefs.h <<\EOF #define USING_BASH_MALLOC 1 EOF else ! MALLOC_TARGET=stubmalloc ! MALLOC_SRC=stub.c fi --- 1165,1188 ---- withval="$with_purify" opt_purify=$withval ! fi; ! if test "$opt_bash_malloc" = yes; then MALLOC_TARGET=malloc MALLOC_SRC=malloc.c ! ! MALLOC_LIB='-lmalloc' ! MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a' ! MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)' ! MALLOC_DEP='$(MALLOC_LIBRARY)' ! ! cat >>confdefs.h <<\EOF #define USING_BASH_MALLOC 1 EOF else ! MALLOC_LIB= ! MALLOC_LIBRARY= ! MALLOC_LDFLAGS= ! MALLOC_DEP= fi *************** *** 854,858 **** if test "$opt_afs" = yes; then ! cat >> confdefs.h <<\EOF #define AFS 1 EOF --- 1198,1202 ---- if test "$opt_afs" = yes; then ! cat >>confdefs.h <<\EOF #define AFS 1 EOF *************** *** 888,891 **** --- 1232,1236 ---- opt_net_redirs=yes opt_progcomp=yes + opt_largefile=yes opt_static_link=no *************** *** 896,901 **** enableval="$enable_minimal_config" opt_minimal_config=$enableval ! fi ! if test $opt_minimal_config = yes; then --- 1241,1245 ---- enableval="$enable_minimal_config" opt_minimal_config=$enableval ! fi; if test $opt_minimal_config = yes; then *************** *** 913,1050 **** enableval="$enable_alias" opt_alias=$enableval ! fi ! # Check whether --enable-arith-for-command or --disable-arith-for-command was given. if test "${enable_arith_for_command+set}" = set; then enableval="$enable_arith_for_command" opt_arith_for_command=$enableval ! fi ! # Check whether --enable-array-variables or --disable-array-variables was given. if test "${enable_array_variables+set}" = set; then enableval="$enable_array_variables" opt_array_variables=$enableval ! fi ! # Check whether --enable-bang-history or --disable-bang-history was given. if test "${enable_bang_history+set}" = set; then enableval="$enable_bang_history" opt_bang_history=$enableval ! fi ! # Check whether --enable-brace-expansion or --disable-brace-expansion was given. if test "${enable_brace_expansion+set}" = set; then enableval="$enable_brace_expansion" opt_brace_expansion=$enableval ! fi ! # Check whether --enable-command-timing or --disable-command-timing was given. if test "${enable_command_timing+set}" = set; then enableval="$enable_command_timing" opt_command_timing=$enableval ! fi ! # Check whether --enable-cond-command or --disable-cond-command was given. if test "${enable_cond_command+set}" = set; then enableval="$enable_cond_command" opt_cond_command=$enableval ! fi ! # Check whether --enable-directory-stack or --disable-directory-stack was given. if test "${enable_directory_stack+set}" = set; then enableval="$enable_directory_stack" opt_dirstack=$enableval ! fi ! # Check whether --enable-disabled-builtins or --disable-disabled-builtins was given. if test "${enable_disabled_builtins+set}" = set; then enableval="$enable_disabled_builtins" opt_disabled_builtins=$enableval ! fi ! # Check whether --enable-dparen-arithmetic or --disable-dparen-arithmetic was given. if test "${enable_dparen_arithmetic+set}" = set; then enableval="$enable_dparen_arithmetic" opt_dparen_arith=$enableval ! fi ! # Check whether --enable-extended-glob or --disable-extended-glob was given. if test "${enable_extended_glob+set}" = set; then enableval="$enable_extended_glob" opt_extended_glob=$enableval ! fi ! # Check whether --enable-help-builtin or --disable-help-builtin was given. if test "${enable_help_builtin+set}" = set; then enableval="$enable_help_builtin" opt_help=$enableval ! fi ! # Check whether --enable-history or --disable-history was given. if test "${enable_history+set}" = set; then enableval="$enable_history" opt_history=$enableval ! fi ! # Check whether --enable-job-control or --disable-job-control was given. if test "${enable_job_control+set}" = set; then enableval="$enable_job_control" opt_job_control=$enableval ! fi ! # Check whether --enable-net-redirections or --disable-net-redirections was given. if test "${enable_net_redirections+set}" = set; then enableval="$enable_net_redirections" opt_net_redirs=$enableval ! fi ! # Check whether --enable-process-substitution or --disable-process-substitution was given. if test "${enable_process_substitution+set}" = set; then enableval="$enable_process_substitution" opt_process_subst=$enableval ! fi ! # Check whether --enable-progcomp or --disable-progcomp was given. if test "${enable_progcomp+set}" = set; then enableval="$enable_progcomp" opt_progcomp=$enableval ! fi ! # Check whether --enable-prompt-string-decoding or --disable-prompt-string-decoding was given. if test "${enable_prompt_string_decoding+set}" = set; then enableval="$enable_prompt_string_decoding" opt_prompt_decoding=$enableval ! fi ! # Check whether --enable-readline or --disable-readline was given. if test "${enable_readline+set}" = set; then enableval="$enable_readline" opt_readline=$enableval ! fi ! # Check whether --enable-restricted or --disable-restricted was given. if test "${enable_restricted+set}" = set; then enableval="$enable_restricted" opt_restricted=$enableval ! fi ! # Check whether --enable-select or --disable-select was given. if test "${enable_select+set}" = set; then enableval="$enable_select" opt_select=$enableval ! fi ! # Check whether --enable-usg-echo-default or --disable-usg-echo-default was given. if test "${enable_usg_echo_default+set}" = set; then enableval="$enable_usg_echo_default" opt_xpg_echo=$enableval ! fi ! # Check whether --enable-xpg-echo-default or --disable-xpg-echo-default was given. if test "${enable_xpg_echo_default+set}" = set; then enableval="$enable_xpg_echo_default" opt_xpg_echo=$enableval ! fi ! # Check whether --enable-profiling or --disable-profiling was given. --- 1257,1376 ---- enableval="$enable_alias" opt_alias=$enableval ! fi; # Check whether --enable-arith-for-command or --disable-arith-for-command was given. if test "${enable_arith_for_command+set}" = set; then enableval="$enable_arith_for_command" opt_arith_for_command=$enableval ! fi; # Check whether --enable-array-variables or --disable-array-variables was given. if test "${enable_array_variables+set}" = set; then enableval="$enable_array_variables" opt_array_variables=$enableval ! fi; # Check whether --enable-bang-history or --disable-bang-history was given. if test "${enable_bang_history+set}" = set; then enableval="$enable_bang_history" opt_bang_history=$enableval ! fi; # Check whether --enable-brace-expansion or --disable-brace-expansion was given. if test "${enable_brace_expansion+set}" = set; then enableval="$enable_brace_expansion" opt_brace_expansion=$enableval ! fi; # Check whether --enable-command-timing or --disable-command-timing was given. if test "${enable_command_timing+set}" = set; then enableval="$enable_command_timing" opt_command_timing=$enableval ! fi; # Check whether --enable-cond-command or --disable-cond-command was given. if test "${enable_cond_command+set}" = set; then enableval="$enable_cond_command" opt_cond_command=$enableval ! fi; # Check whether --enable-directory-stack or --disable-directory-stack was given. if test "${enable_directory_stack+set}" = set; then enableval="$enable_directory_stack" opt_dirstack=$enableval ! fi; # Check whether --enable-disabled-builtins or --disable-disabled-builtins was given. if test "${enable_disabled_builtins+set}" = set; then enableval="$enable_disabled_builtins" opt_disabled_builtins=$enableval ! fi; # Check whether --enable-dparen-arithmetic or --disable-dparen-arithmetic was given. if test "${enable_dparen_arithmetic+set}" = set; then enableval="$enable_dparen_arithmetic" opt_dparen_arith=$enableval ! fi; # Check whether --enable-extended-glob or --disable-extended-glob was given. if test "${enable_extended_glob+set}" = set; then enableval="$enable_extended_glob" opt_extended_glob=$enableval ! fi; # Check whether --enable-help-builtin or --disable-help-builtin was given. if test "${enable_help_builtin+set}" = set; then enableval="$enable_help_builtin" opt_help=$enableval ! fi; # Check whether --enable-history or --disable-history was given. if test "${enable_history+set}" = set; then enableval="$enable_history" opt_history=$enableval ! fi; # Check whether --enable-job-control or --disable-job-control was given. if test "${enable_job_control+set}" = set; then enableval="$enable_job_control" opt_job_control=$enableval ! fi; ! # Check whether --enable-largefile or --disable-largefile was given. ! if test "${enable_largefile+set}" = set; then ! enableval="$enable_largefile" ! opt_largefile=$enableval ! fi; # Check whether --enable-net-redirections or --disable-net-redirections was given. if test "${enable_net_redirections+set}" = set; then enableval="$enable_net_redirections" opt_net_redirs=$enableval ! fi; # Check whether --enable-process-substitution or --disable-process-substitution was given. if test "${enable_process_substitution+set}" = set; then enableval="$enable_process_substitution" opt_process_subst=$enableval ! fi; # Check whether --enable-progcomp or --disable-progcomp was given. if test "${enable_progcomp+set}" = set; then enableval="$enable_progcomp" opt_progcomp=$enableval ! fi; # Check whether --enable-prompt-string-decoding or --disable-prompt-string-decoding was given. if test "${enable_prompt_string_decoding+set}" = set; then enableval="$enable_prompt_string_decoding" opt_prompt_decoding=$enableval ! fi; # Check whether --enable-readline or --disable-readline was given. if test "${enable_readline+set}" = set; then enableval="$enable_readline" opt_readline=$enableval ! fi; # Check whether --enable-restricted or --disable-restricted was given. if test "${enable_restricted+set}" = set; then enableval="$enable_restricted" opt_restricted=$enableval ! fi; # Check whether --enable-select or --disable-select was given. if test "${enable_select+set}" = set; then enableval="$enable_select" opt_select=$enableval ! fi; # Check whether --enable-usg-echo-default or --disable-usg-echo-default was given. if test "${enable_usg_echo_default+set}" = set; then enableval="$enable_usg_echo_default" opt_xpg_echo=$enableval ! fi; # Check whether --enable-xpg-echo-default or --disable-xpg-echo-default was given. if test "${enable_xpg_echo_default+set}" = set; then enableval="$enable_xpg_echo_default" opt_xpg_echo=$enableval ! fi; # Check whether --enable-profiling or --disable-profiling was given. *************** *** 1052,1068 **** enableval="$enable_profiling" opt_profiling=$enableval ! fi ! # Check whether --enable-static-link or --disable-static-link was given. if test "${enable_static_link+set}" = set; then enableval="$enable_static_link" opt_static_link=$enableval ! fi ! ! ! if test $opt_alias = yes; then ! cat >> confdefs.h <<\EOF #define ALIAS 1 EOF --- 1378,1390 ---- enableval="$enable_profiling" opt_profiling=$enableval ! fi; # Check whether --enable-static-link or --disable-static-link was given. if test "${enable_static_link+set}" = set; then enableval="$enable_static_link" opt_static_link=$enableval ! fi; if test $opt_alias = yes; then ! cat >>confdefs.h <<\EOF #define ALIAS 1 EOF *************** *** 1070,1074 **** fi if test $opt_dirstack = yes; then ! cat >> confdefs.h <<\EOF #define PUSHD_AND_POPD 1 EOF --- 1392,1396 ---- fi if test $opt_dirstack = yes; then ! cat >>confdefs.h <<\EOF #define PUSHD_AND_POPD 1 EOF *************** *** 1076,1080 **** fi if test $opt_restricted = yes; then ! cat >> confdefs.h <<\EOF #define RESTRICTED_SHELL 1 EOF --- 1398,1402 ---- fi if test $opt_restricted = yes; then ! cat >>confdefs.h <<\EOF #define RESTRICTED_SHELL 1 EOF *************** *** 1082,1086 **** fi if test $opt_process_subst = yes; then ! cat >> confdefs.h <<\EOF #define PROCESS_SUBSTITUTION 1 EOF --- 1404,1408 ---- fi if test $opt_process_subst = yes; then ! cat >>confdefs.h <<\EOF #define PROCESS_SUBSTITUTION 1 EOF *************** *** 1088,1092 **** fi if test $opt_prompt_decoding = yes; then ! cat >> confdefs.h <<\EOF #define PROMPT_STRING_DECODE 1 EOF --- 1410,1414 ---- fi if test $opt_prompt_decoding = yes; then ! cat >>confdefs.h <<\EOF #define PROMPT_STRING_DECODE 1 EOF *************** *** 1094,1098 **** fi if test $opt_select = yes; then ! cat >> confdefs.h <<\EOF #define SELECT_COMMAND 1 EOF --- 1416,1420 ---- fi if test $opt_select = yes; then ! cat >>confdefs.h <<\EOF #define SELECT_COMMAND 1 EOF *************** *** 1100,1104 **** fi if test $opt_help = yes; then ! cat >> confdefs.h <<\EOF #define HELP_BUILTIN 1 EOF --- 1422,1426 ---- fi if test $opt_help = yes; then ! cat >>confdefs.h <<\EOF #define HELP_BUILTIN 1 EOF *************** *** 1106,1110 **** fi if test $opt_array_variables = yes; then ! cat >> confdefs.h <<\EOF #define ARRAY_VARS 1 EOF --- 1428,1432 ---- fi if test $opt_array_variables = yes; then ! cat >>confdefs.h <<\EOF #define ARRAY_VARS 1 EOF *************** *** 1112,1116 **** fi if test $opt_dparen_arith = yes; then ! cat >> confdefs.h <<\EOF #define DPAREN_ARITHMETIC 1 EOF --- 1434,1438 ---- fi if test $opt_dparen_arith = yes; then ! cat >>confdefs.h <<\EOF #define DPAREN_ARITHMETIC 1 EOF *************** *** 1118,1122 **** fi if test $opt_brace_expansion = yes; then ! cat >> confdefs.h <<\EOF #define BRACE_EXPANSION 1 EOF --- 1440,1444 ---- fi if test $opt_brace_expansion = yes; then ! cat >>confdefs.h <<\EOF #define BRACE_EXPANSION 1 EOF *************** *** 1124,1128 **** fi if test $opt_disabled_builtins = yes; then ! cat >> confdefs.h <<\EOF #define DISABLED_BUILTINS 1 EOF --- 1446,1450 ---- fi if test $opt_disabled_builtins = yes; then ! cat >>confdefs.h <<\EOF #define DISABLED_BUILTINS 1 EOF *************** *** 1130,1134 **** fi if test $opt_command_timing = yes; then ! cat >> confdefs.h <<\EOF #define COMMAND_TIMING 1 EOF --- 1452,1456 ---- fi if test $opt_command_timing = yes; then ! cat >>confdefs.h <<\EOF #define COMMAND_TIMING 1 EOF *************** *** 1136,1140 **** fi if test $opt_xpg_echo = yes ; then ! cat >> confdefs.h <<\EOF #define DEFAULT_ECHO_TO_XPG 1 EOF --- 1458,1462 ---- fi if test $opt_xpg_echo = yes ; then ! cat >>confdefs.h <<\EOF #define DEFAULT_ECHO_TO_XPG 1 EOF *************** *** 1142,1146 **** fi if test $opt_extended_glob = yes ; then ! cat >> confdefs.h <<\EOF #define EXTENDED_GLOB 1 EOF --- 1464,1468 ---- fi if test $opt_extended_glob = yes ; then ! cat >>confdefs.h <<\EOF #define EXTENDED_GLOB 1 EOF *************** *** 1148,1152 **** fi if test $opt_cond_command = yes ; then ! cat >> confdefs.h <<\EOF #define COND_COMMAND 1 EOF --- 1470,1474 ---- fi if test $opt_cond_command = yes ; then ! cat >>confdefs.h <<\EOF #define COND_COMMAND 1 EOF *************** *** 1154,1158 **** fi if test $opt_arith_for_command = yes; then ! cat >> confdefs.h <<\EOF #define ARITH_FOR_COMMAND 1 EOF --- 1476,1480 ---- fi if test $opt_arith_for_command = yes; then ! cat >>confdefs.h <<\EOF #define ARITH_FOR_COMMAND 1 EOF *************** *** 1160,1164 **** fi if test $opt_net_redirs = yes; then ! cat >> confdefs.h <<\EOF #define NETWORK_REDIRECTIONS 1 EOF --- 1482,1486 ---- fi if test $opt_net_redirs = yes; then ! cat >>confdefs.h <<\EOF #define NETWORK_REDIRECTIONS 1 EOF *************** *** 1166,1170 **** fi if test $opt_progcomp = yes; then ! cat >> confdefs.h <<\EOF #define PROGRAMMABLE_COMPLETION 1 EOF --- 1488,1492 ---- fi if test $opt_progcomp = yes; then ! cat >>confdefs.h <<\EOF #define PROGRAMMABLE_COMPLETION 1 EOF *************** *** 1178,1258 **** fi ! ! BASHVERS=2.05 ! BASHPATCH=0 ! ! echo "Beginning configuration for bash-$BASHVERS for ${host_cpu}-${host_vendor}-${host_os}" ! ! # Extract the first word of "gcc", so it can be a program name with args. ! set dummy gcc; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1196: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_CC="gcc" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! CC="$ac_cv_prog_CC" if test -n "$CC"; then ! echo "$ac_t""$CC" 1>&6 else ! echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1226: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ! ac_prog_rejected=yes ! continue ! fi ! ac_cv_prog_CC="cc" ! break ! fi ! done ! IFS="$ac_save_ifs" if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift ! if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ! set dummy "$ac_dir/$ac_word" "$@" shift ac_cv_prog_CC="$@" --- 1500,1697 ---- fi + echo "" + echo "Beginning configuration for bash-$BASHVERS for ${host_cpu}-${host_vendor}-${host_os}" + echo "" + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 + echo "$as_me:1514: checking for $ac_word" >&5 + echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else + ac_save_IFS=$IFS; IFS=$ac_path_separator + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:1529: found $ac_dir/$ac_word" >&5 + break + done + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then + echo "$as_me:1537: result: $CC" >&5 + echo "${ECHO_T}$CC" >&6 + else + echo "$as_me:1540: result: no" >&5 + echo "${ECHO_T}no" >&6 + fi + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 + echo "$as_me:1549: checking for $ac_word" >&5 + echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + else + ac_save_IFS=$IFS; IFS=$ac_path_separator + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:1564: found $ac_dir/$ac_word" >&5 + break + done + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then + echo "$as_me:1572: result: $ac_ct_CC" >&5 + echo "${ECHO_T}$ac_ct_CC" >&6 + else + echo "$as_me:1575: result: no" >&5 + echo "${ECHO_T}no" >&6 + fi + CC=$ac_ct_CC + else + CC="$ac_cv_prog_CC" + fi ! if test -z "$CC"; then ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ! set dummy ${ac_tool_prefix}cc; ac_word=$2 ! echo "$as_me:1588: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ! ac_save_IFS=$IFS; IFS=$ac_path_separator ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! IFS=$ac_save_IFS ! test -z "$ac_dir" && ac_dir=. ! $as_executable_p "$ac_dir/$ac_word" || continue ! ac_cv_prog_CC="${ac_tool_prefix}cc" ! echo "$as_me:1603: found $ac_dir/$ac_word" >&5 ! break ! done ! fi fi ! CC=$ac_cv_prog_CC if test -n "$CC"; then ! echo "$as_me:1611: result: $CC" >&5 ! echo "${ECHO_T}$CC" >&6 else ! echo "$as_me:1614: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 + echo "$as_me:1623: checking for $ac_word" >&5 + echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + else + ac_save_IFS=$IFS; IFS=$ac_path_separator + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:1638: found $ac_dir/$ac_word" >&5 + break + done + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then + echo "$as_me:1646: result: $ac_ct_CC" >&5 + echo "${ECHO_T}$ac_ct_CC" >&6 + else + echo "$as_me:1649: result: no" >&5 + echo "${ECHO_T}no" >&6 + fi + + CC=$ac_ct_CC + else + CC="$ac_cv_prog_CC" + fi + + fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 ! echo "$as_me:1662: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no ! ac_save_IFS=$IFS; IFS=$ac_path_separator ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! IFS=$ac_save_IFS ! test -z "$ac_dir" && ac_dir=. ! $as_executable_p "$ac_dir/$ac_word" || continue ! if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ! ac_prog_rejected=yes ! continue ! fi ! ac_cv_prog_CC="cc" ! echo "$as_me:1682: found $ac_dir/$ac_word" >&5 ! break ! done ! if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift ! if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ! set dummy "$ac_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" *************** *** 1261,1403 **** fi fi ! CC="$ac_cv_prog_CC" if test -n "$CC"; then ! echo "$ac_t""$CC" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! if test -z "$CC"; then ! case "`uname -s`" in ! *win32* | *WIN32*) ! # Extract the first word of "cl", so it can be a program name with args. ! set dummy cl; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1277: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_CC="cl" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! CC="$ac_cv_prog_CC" if test -n "$CC"; then ! echo "$ac_t""$CC" 1>&6 else ! echo "$ac_t""no" 1>&6 ! fi ! ;; ! esac ! fi ! test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi ! echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:1309: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ! ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! cat > conftest.$ac_ext << EOF ! ! #line 1320 "configure" ! #include "confdefs.h" - main(){return(0);} - EOF - if { (eval echo configure:1325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no fi - rm -fr conftest* - ac_ext=c - # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. - ac_cpp='$CPP $CPPFLAGS' - ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' - ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' - cross_compiling=$ac_cv_prog_cc_cross - - echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 - if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } - fi - echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 - echo "configure:1351: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 - echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 - cross_compiling=$ac_cv_prog_cc_cross - - echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 - echo "configure:1356: checking whether we are using GNU C" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes - else - ac_cv_prog_gcc=no fi fi ! echo "$ac_t""$ac_cv_prog_gcc" 1>&6 ! if test $ac_cv_prog_gcc = yes; then ! GCC=yes ! else ! GCC= fi - ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS= - echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 - echo "configure:1384: checking whether ${CC-cc} accepts -g" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - echo 'void f(){}' > conftest.c - if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes - else - ac_cv_prog_cc_g=no fi - rm -f conftest* ! fi ! echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 ! if test "$ac_test_CFLAGS" = set; then ! CFLAGS="$ac_save_CFLAGS" ! elif test $ac_cv_prog_cc_g = yes; then ! if test "$GCC" = yes; then CFLAGS="-g -O2" else --- 1700,2081 ---- fi fi ! CC=$ac_cv_prog_CC if test -n "$CC"; then ! echo "$as_me:1704: result: $CC" >&5 ! echo "${ECHO_T}$CC" >&6 else ! echo "$as_me:1707: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! fi ! if test -z "$CC"; then ! if test -n "$ac_tool_prefix"; then ! for ac_prog in cl ! do ! # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ! set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ! echo "$as_me:1718: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ! ac_save_IFS=$IFS; IFS=$ac_path_separator ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! IFS=$ac_save_IFS ! test -z "$ac_dir" && ac_dir=. ! $as_executable_p "$ac_dir/$ac_word" || continue ! ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ! echo "$as_me:1733: found $ac_dir/$ac_word" >&5 ! break ! done ! fi fi ! CC=$ac_cv_prog_CC if test -n "$CC"; then ! echo "$as_me:1741: result: $CC" >&5 ! echo "${ECHO_T}$CC" >&6 else ! echo "$as_me:1744: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! test -n "$CC" && break ! done ! fi ! if test -z "$CC"; then ! ac_ct_CC=$CC ! for ac_prog in cl ! do ! # Extract the first word of "$ac_prog", so it can be a program name with args. ! set dummy $ac_prog; ac_word=$2 ! echo "$as_me:1757: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! if test -n "$ac_ct_CC"; then ! ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ! else ! ac_save_IFS=$IFS; IFS=$ac_path_separator ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! IFS=$ac_save_IFS ! test -z "$ac_dir" && ac_dir=. ! $as_executable_p "$ac_dir/$ac_word" || continue ! ac_cv_prog_ac_ct_CC="$ac_prog" ! echo "$as_me:1772: found $ac_dir/$ac_word" >&5 ! break ! done fi fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then + echo "$as_me:1780: result: $ac_ct_CC" >&5 + echo "${ECHO_T}$ac_ct_CC" >&6 + else + echo "$as_me:1783: result: no" >&5 + echo "${ECHO_T}no" >&6 fi ! test -n "$ac_ct_CC" && break ! done ! CC=$ac_ct_CC fi fi ! test -z "$CC" && { { echo "$as_me:1795: error: no acceptable cc found in \$PATH" >&5 ! echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} ! { (exit 1); exit 1; }; } ! ! # Provide some information about the compiler. ! echo "$as_me:1800:" \ ! "checking for C compiler version" >&5 ! ac_compiler=`set X $ac_compile; echo $2` ! { (eval echo "$as_me:1803: \"$ac_compiler --version &5\"") >&5 ! (eval $ac_compiler --version &5) 2>&5 ! ac_status=$? ! echo "$as_me:1806: \$? = $ac_status" >&5 ! (exit $ac_status); } ! { (eval echo "$as_me:1808: \"$ac_compiler -v &5\"") >&5 ! (eval $ac_compiler -v &5) 2>&5 ! ac_status=$? ! echo "$as_me:1811: \$? = $ac_status" >&5 ! (exit $ac_status); } ! { (eval echo "$as_me:1813: \"$ac_compiler -V &5\"") >&5 ! (eval $ac_compiler -V &5) 2>&5 ! ac_status=$? ! echo "$as_me:1816: \$? = $ac_status" >&5 ! (exit $ac_status); } ! cat >conftest.$ac_ext <<_ACEOF ! #line 1820 "configure" ! #include "confdefs.h" ! ! int ! main () ! { ! ! ; ! return 0; ! } ! _ACEOF ! ac_clean_files_save=$ac_clean_files ! ac_clean_files="$ac_clean_files a.out a.exe" ! # Try to create an executable without -o first, disregard a.out. ! # It will help us diagnose broken compilers, and finding out an intuition ! # of exeext. ! echo "$as_me:1836: checking for C compiler default output" >&5 ! echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ! ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` ! if { (eval echo "$as_me:1839: \"$ac_link_default\"") >&5 ! (eval $ac_link_default) 2>&5 ! ac_status=$? ! echo "$as_me:1842: \$? = $ac_status" >&5 ! (exit $ac_status); }; then ! # Find the output, starting from the most likely. This scheme is ! # not robust to junk in `.', hence go to wildcards (a.*) only as a last ! # resort. ! for ac_file in `ls a.exe conftest.exe 2>/dev/null; ! ls a.out conftest 2>/dev/null; ! ls a.* conftest.* 2>/dev/null`; do ! case $ac_file in ! *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; ! a.out ) # We found the default executable, but exeext='' is most ! # certainly right. ! break;; ! *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! # FIXME: I believe we export ac_cv_exeext for Libtool --akim. ! export ac_cv_exeext ! break;; ! * ) break;; ! esac ! done ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! { { echo "$as_me:1865: error: C compiler cannot create executables" >&5 ! echo "$as_me: error: C compiler cannot create executables" >&2;} ! { (exit 77); exit 77; }; } ! fi ! ! ac_exeext=$ac_cv_exeext ! echo "$as_me:1871: result: $ac_file" >&5 ! echo "${ECHO_T}$ac_file" >&6 ! ! # Check the compiler produces executables we can run. If not, either ! # the compiler is broken, or we cross compile. ! echo "$as_me:1876: checking whether the C compiler works" >&5 ! echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ! # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 ! # If not cross compiling, check that we can run a simple program. ! if test "$cross_compiling" != yes; then ! if { ac_try='./$ac_file' ! { (eval echo "$as_me:1882: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:1885: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! cross_compiling=no ! else ! if test "$cross_compiling" = maybe; then ! cross_compiling=yes ! else ! { { echo "$as_me:1892: error: cannot run C compiled programs. ! If you meant to cross compile, use \`--host'." >&5 ! echo "$as_me: error: cannot run C compiled programs. ! If you meant to cross compile, use \`--host'." >&2;} ! { (exit 1); exit 1; }; } ! fi ! fi ! fi ! echo "$as_me:1900: result: yes" >&5 ! echo "${ECHO_T}yes" >&6 ! ! rm -f a.out a.exe conftest$ac_cv_exeext ! ac_clean_files=$ac_clean_files_save ! # Check the compiler produces executables we can run. If not, either ! # the compiler is broken, or we cross compile. ! echo "$as_me:1907: checking whether we are cross compiling" >&5 ! echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 ! echo "$as_me:1909: result: $cross_compiling" >&5 ! echo "${ECHO_T}$cross_compiling" >&6 ! ! echo "$as_me:1912: checking for executable suffix" >&5 ! echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 ! if { (eval echo "$as_me:1914: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:1917: \$? = $ac_status" >&5 ! (exit $ac_status); }; then ! # If both `conftest.exe' and `conftest' are `present' (well, observable) ! # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will ! # work properly (i.e., refer to `conftest.exe'), while it won't with ! # `rm'. ! for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do ! case $ac_file in ! *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; ! *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! export ac_cv_exeext ! break;; ! * ) break;; ! esac ! done ! else ! { { echo "$as_me:1933: error: cannot compute EXEEXT: cannot compile and link" >&5 ! echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} ! { (exit 1); exit 1; }; } ! fi ! ! rm -f conftest$ac_cv_exeext ! echo "$as_me:1939: result: $ac_cv_exeext" >&5 ! echo "${ECHO_T}$ac_cv_exeext" >&6 ! ! rm -f conftest.$ac_ext ! EXEEXT=$ac_cv_exeext ! ac_exeext=$EXEEXT ! echo "$as_me:1945: checking for object suffix" >&5 ! echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 ! if test "${ac_cv_objext+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line 1951 "configure" ! #include "confdefs.h" ! ! int ! main () ! { ! ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.o conftest.obj ! if { (eval echo "$as_me:1963: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:1966: \$? = $ac_status" >&5 ! (exit $ac_status); }; then ! for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ! case $ac_file in ! *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; ! *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` ! break;; ! esac ! done ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! { { echo "$as_me:1978: error: cannot compute OBJEXT: cannot compile" >&5 ! echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} ! { (exit 1); exit 1; }; } ! fi ! ! rm -f conftest.$ac_cv_objext conftest.$ac_ext ! fi ! echo "$as_me:1985: result: $ac_cv_objext" >&5 ! echo "${ECHO_T}$ac_cv_objext" >&6 ! OBJEXT=$ac_cv_objext ! ac_objext=$OBJEXT ! echo "$as_me:1989: checking whether we are using the GNU C compiler" >&5 ! echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ! if test "${ac_cv_c_compiler_gnu+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line 1995 "configure" ! #include "confdefs.h" ! ! int ! main () ! { ! #ifndef __GNUC__ ! choke me ! #endif ! ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:2010: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:2013: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:2016: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2019: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_compiler_gnu=yes ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ac_compiler_gnu=no ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! ac_cv_c_compiler_gnu=$ac_compiler_gnu ! ! fi ! echo "$as_me:2031: result: $ac_cv_c_compiler_gnu" >&5 ! echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ! GCC=`test $ac_compiler_gnu = yes && echo yes` ! ac_test_CFLAGS=${CFLAGS+set} ! ac_save_CFLAGS=$CFLAGS ! CFLAGS="-g" ! echo "$as_me:2037: checking whether $CC accepts -g" >&5 ! echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ! if test "${ac_cv_prog_cc_g+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line 2043 "configure" ! #include "confdefs.h" ! ! int ! main () ! { ! ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:2055: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:2058: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:2061: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2064: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_prog_cc_g=yes ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ac_cv_prog_cc_g=no ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! fi ! echo "$as_me:2074: result: $ac_cv_prog_cc_g" >&5 ! echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 ! if test "$ac_test_CFLAGS" = set; then ! CFLAGS=$ac_save_CFLAGS ! elif test $ac_cv_prog_cc_g = yes; then ! if test "$GCC" = yes; then CFLAGS="-g -O2" else *************** *** 1411,1456 **** fi fi ! ! echo $ac_n "checking whether large file support needs explicit enabling""... $ac_c" 1>&6 ! echo "configure:1416: checking whether large file support needs explicit enabling" >&5 ! ac_getconfs='' ! ac_result=yes ! ac_set='' ! ac_shellvars='CPPFLAGS LDFLAGS LIBS' ! for ac_shellvar in $ac_shellvars; do ! case $ac_shellvar in ! CPPFLAGS) ac_lfsvar=LFS_CFLAGS ac_lfs64var=LFS64_CFLAGS ;; ! *) ac_lfsvar=LFS_$ac_shellvar ac_lfs64var=LFS64_$ac_shellvar ;; ! esac ! eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar ! (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; } ! ac_getconf=`getconf $ac_lfsvar` ! ac_getconf64=`getconf $ac_lfs64var` ! ac_getconfs=$ac_getconfs$ac_getconf\ $ac_getconf64 ! eval ac_test_$ac_shellvar="\$ac_getconf\ \$ac_getconf64" done ! case "$ac_result$ac_getconfs" in ! yes) ac_result=no ;; ! esac ! case "$ac_result$ac_set" in ! yes?*) ac_result="yes, but $ac_set is already set, so use its settings" ! esac ! echo "$ac_t""$ac_result" 1>&6 ! case $ac_result in ! yes) ! for ac_shellvar in $ac_shellvars; do ! eval $ac_shellvar=\$ac_test_$ac_shellvar ! done ;; ! esac ! echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 ! echo "configure:1449: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && ! grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then ! echo "$ac_t""yes" 1>&6 ISC=yes # If later tests want to check for ISC. ! cat >> confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF --- 2089,2213 ---- fi fi ! # Some people use a C++ compiler to compile C. Since we use `exit', ! # in C++ we need to declare it. In case someone uses the same compiler ! # for both compiling C and C++ we need to have the C++ compiler decide ! # the declaration of exit, since it's the most demanding environment. ! cat >conftest.$ac_ext <<_ACEOF ! #ifndef __cplusplus ! choke me ! #endif ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:2101: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:2104: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:2107: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2110: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! for ac_declaration in \ ! ''\ ! '#include ' \ ! 'extern "C" void std::exit (int) throw (); using std::exit;' \ ! 'extern "C" void std::exit (int); using std::exit;' \ ! 'extern "C" void exit (int) throw ();' \ ! 'extern "C" void exit (int);' \ ! 'void exit (int);' ! do ! cat >conftest.$ac_ext <<_ACEOF ! #line 2122 "configure" ! #include "confdefs.h" ! #include ! $ac_declaration ! int ! main () ! { ! exit (42); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:2135: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:2138: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:2141: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2144: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! : ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! continue ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! cat >conftest.$ac_ext <<_ACEOF ! #line 2154 "configure" ! #include "confdefs.h" ! $ac_declaration ! int ! main () ! { ! exit (42); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:2166: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:2169: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:2172: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2175: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! break ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext done ! rm -f conftest* ! if test -n "$ac_declaration"; then ! echo '#ifdef __cplusplus' >>confdefs.h ! echo $ac_declaration >>confdefs.h ! echo '#endif' >>confdefs.h ! fi + else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu ! echo "$as_me:2202: checking for POSIXized ISC" >&5 ! echo $ECHO_N "checking for POSIXized ISC... $ECHO_C" >&6 if test -d /etc/conf/kconfig.d && ! grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then ! echo "$as_me:2207: result: yes" >&5 ! echo "${ECHO_T}yes" >&6 ISC=yes # If later tests want to check for ISC. ! ! cat >>confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF *************** *** 1462,1471 **** fi else ! echo "$ac_t""no" 1>&6 ISC= fi ! echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:1470: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then --- 2219,2234 ---- fi else ! echo "$as_me:2221: result: no" >&5 ! echo "${ECHO_T}no" >&6 ISC= fi ! ac_ext=c ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu ! echo "$as_me:2231: checking how to run the C preprocessor" >&5 ! echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then *************** *** 1473,1593 **** fi if test -z "$CPP"; then ! if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! # This must be in double quotes, not single quotes, because CPP may get ! # substituted into the Makefile and "${CC-cc}" will confuse make. ! CPP="${CC-cc} -E" # On the NeXT, cc -E runs the code through the compiler's parser, ! # not just through cpp. ! cat > conftest.$ac_ext < ! Syntax Error ! EOF ! ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1491: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ! ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ! if test -z "$ac_err"; then : else ! echo "$ac_err" >&5 ! echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ! rm -rf conftest* ! CPP="${CC-cc} -E -traditional-cpp" ! cat > conftest.$ac_ext < ! Syntax Error ! EOF ! ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1508: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ! ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ! if test -z "$ac_err"; then ! : else ! echo "$ac_err" >&5 ! echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ! rm -rf conftest* ! CPP="${CC-cc} -nologo -E" ! cat > conftest.$ac_ext < ! Syntax Error ! EOF ! ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ! ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ! if test -z "$ac_err"; then : else ! echo "$ac_err" >&5 ! echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ! rm -rf conftest* ! CPP=/lib/cpp ! fi ! rm -f conftest* fi ! rm -f conftest* fi ! rm -f conftest* ! ac_cv_prog_CPP="$CPP" fi ! CPP="$ac_cv_prog_CPP" else ! ac_cv_prog_CPP="$CPP" fi - echo "$ac_t""$CPP" 1>&6 ! ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'` ! echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6 ! echo "configure:1551: checking for minix/config.h" >&5 ! if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < ! EOF ! ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ! ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ! if test -z "$ac_err"; then ! rm -rf conftest* ! eval "ac_cv_header_$ac_safe=yes" else ! echo "$ac_err" >&5 ! echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_header_$ac_safe=no" fi ! rm -f conftest* fi ! if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then ! echo "$ac_t""yes" 1>&6 MINIX=yes else ! echo "$ac_t""no" 1>&6 ! MINIX= fi if test "$MINIX" = yes; then ! cat >> confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF ! cat >> confdefs.h <<\EOF #define _POSIX_1_SOURCE 2 EOF ! cat >> confdefs.h <<\EOF #define _MINIX 1 EOF --- 2236,2481 ---- fi if test -z "$CPP"; then ! if test "${ac_cv_prog_CPP+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! # Double quotes because CPP needs to be expanded ! for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" ! do ! ac_preproc_ok=false ! for ac_c_preproc_warn_flag in '' yes ! do ! # Use a header file that comes with gcc, so configuring glibc ! # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, ! # not just through cpp. "Syntax error" is here to catch this case. ! cat >conftest.$ac_ext <<_ACEOF ! #line 2252 "configure" #include "confdefs.h" #include ! Syntax error ! _ACEOF ! if { (eval echo "$as_me:2257: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! egrep -v '^ *\+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:2263: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi ! else ! ac_cpp_err=yes ! fi ! if test -z "$ac_cpp_err"; then : else ! echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! # Broken: fails on valid input. ! continue ! fi ! rm -f conftest.err conftest.$ac_ext ! ! # OK, works on sane cases. Now check whether non-existent headers ! # can be detected and how. ! cat >conftest.$ac_ext <<_ACEOF ! #line 2286 "configure" ! #include "confdefs.h" ! #include ! _ACEOF ! if { (eval echo "$as_me:2290: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! egrep -v '^ *\+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:2296: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi ! else ! ac_cpp_err=yes ! fi ! if test -z "$ac_cpp_err"; then ! # Broken: success on invalid input. ! continue else ! echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! # Passes both tests. ! ac_preproc_ok=: ! break ! fi ! rm -f conftest.err conftest.$ac_ext ! ! done ! # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ! rm -f conftest.err conftest.$ac_ext ! if $ac_preproc_ok; then ! break ! fi ! ! done ! ac_cv_prog_CPP=$CPP ! ! fi ! CPP=$ac_cv_prog_CPP ! else ! ac_cv_prog_CPP=$CPP ! fi ! echo "$as_me:2333: result: $CPP" >&5 ! echo "${ECHO_T}$CPP" >&6 ! ac_preproc_ok=false ! for ac_c_preproc_warn_flag in '' yes ! do ! # Use a header file that comes with gcc, so configuring glibc ! # with a fresh cross-compiler works. ! # On the NeXT, cc -E runs the code through the compiler's parser, ! # not just through cpp. "Syntax error" is here to catch this case. ! cat >conftest.$ac_ext <<_ACEOF ! #line 2343 "configure" #include "confdefs.h" #include ! Syntax error ! _ACEOF ! if { (eval echo "$as_me:2348: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! egrep -v '^ *\+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:2354: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi ! else ! ac_cpp_err=yes ! fi ! if test -z "$ac_cpp_err"; then : else ! echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! # Broken: fails on valid input. ! continue fi ! rm -f conftest.err conftest.$ac_ext ! ! # OK, works on sane cases. Now check whether non-existent headers ! # can be detected and how. ! cat >conftest.$ac_ext <<_ACEOF ! #line 2377 "configure" ! #include "confdefs.h" ! #include ! _ACEOF ! if { (eval echo "$as_me:2381: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! egrep -v '^ *\+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:2387: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi ! else ! ac_cpp_err=yes fi ! if test -z "$ac_cpp_err"; then ! # Broken: success on invalid input. ! continue ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! # Passes both tests. ! ac_preproc_ok=: ! break fi ! rm -f conftest.err conftest.$ac_ext ! ! done ! # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ! rm -f conftest.err conftest.$ac_ext ! if $ac_preproc_ok; then ! : else ! { { echo "$as_me:2415: error: C preprocessor \"$CPP\" fails sanity check" >&5 ! echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} ! { (exit 1); exit 1; }; } fi ! ac_ext=c ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu ! ! echo "$as_me:2426: checking for minix/config.h" >&5 ! echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 ! if test "${ac_cv_header_minix_config_h+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.$ac_ext <<_ACEOF ! #line 2432 "configure" #include "confdefs.h" #include ! _ACEOF ! if { (eval echo "$as_me:2436: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! egrep -v '^ *\+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:2442: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi ! else ! ac_cpp_err=yes ! fi ! if test -z "$ac_cpp_err"; then ! ac_cv_header_minix_config_h=yes else ! echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! ac_cv_header_minix_config_h=no fi ! rm -f conftest.err conftest.$ac_ext fi ! echo "$as_me:2461: result: $ac_cv_header_minix_config_h" >&5 ! echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 ! if test $ac_cv_header_minix_config_h = yes; then MINIX=yes else ! MINIX= fi if test "$MINIX" = yes; then ! ! cat >>confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF ! cat >>confdefs.h <<\EOF #define _POSIX_1_SOURCE 2 EOF ! cat >>confdefs.h <<\EOF #define _MINIX 1 EOF *************** *** 1595,1699 **** fi ! echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 ! echo "configure:1600: checking for Cygwin environment" >&5 ! if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! ac_cv_cygwin=yes else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! ac_cv_cygwin=no fi ! rm -f conftest* ! rm -f conftest* fi ! echo "$ac_t""$ac_cv_cygwin" 1>&6 ! CYGWIN= ! test "$ac_cv_cygwin" = yes && CYGWIN=yes ! echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:1633: checking for mingw32 environment" >&5 ! if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! ac_cv_mingw32=yes else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! ac_cv_mingw32=no ! fi ! rm -f conftest* ! rm -f conftest* fi ! echo "$ac_t""$ac_cv_mingw32" 1>&6 ! MINGW32= ! test "$ac_cv_mingw32" = yes && MINGW32=yes ! ! ! echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1664: checking for executable suffix" >&5 ! if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! if test "$CYGWIN" = yes || test "$MINGW32" = yes; then ! ac_cv_exeext=.exe ! else ! rm -f conftest* ! echo 'int main () { return 0; }' > conftest.$ac_ext ! ac_cv_exeext= ! if { (eval echo configure:1674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then ! for file in conftest.*; do ! case $file in ! *.c | *.o | *.obj) ;; ! *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; ! esac ! done ! else ! { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } ! fi ! rm -f conftest* ! test x"${ac_cv_exeext}" = x && ac_cv_exeext=no fi fi ! EXEEXT="" ! test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} ! echo "$ac_t""${ac_cv_exeext}" 1>&6 ! ac_exeext=$EXEEXT ! SIGNAMES_H=lsignames.h if test "x$cross_compiling" = "xyes"; then --- 2483,2780 ---- fi + case $host_os in + *cygwin* ) CYGWIN=yes;; + * ) CYGWIN=no;; + esac ! case $host_os in ! *mingw32* ) MINGW32=yes;; ! * ) MINGW32=no;; ! esac ! # Check whether --enable-largefile or --disable-largefile was given. ! if test "${enable_largefile+set}" = set; then ! enableval="$enable_largefile" ! ! fi; ! if test "$enable_largefile" != no; then ! ! echo "$as_me:2502: checking for special C compiler options needed for large files" >&5 ! echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 ! if test "${ac_cv_sys_largefile_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ac_cv_sys_largefile_CC=no ! if test "$GCC" != yes; then ! ac_save_CC=$CC ! while :; do ! # IRIX 6.2 and later do not support large files by default, ! # so use the C compiler's -n32 option if that helps. ! cat >conftest.$ac_ext <<_ACEOF ! #line 2514 "configure" ! #include "confdefs.h" ! #include ! /* Check that off_t can represent 2**63 - 1 correctly. ! We can't simply define LARGE_OFF_T to be 9223372036854775807, ! since some C++ compilers masquerading as C compilers ! incorrectly reject 9223372036854775807. */ ! #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ! int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ! && LARGE_OFF_T % 2147483647 == 1) ! ? 1 : -1]; ! int ! main () ! { ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:2534: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:2537: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:2540: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2543: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! break else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 fi ! rm -f conftest.$ac_objext ! CC="$CC -n32" ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:2553: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:2556: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:2559: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2562: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_sys_largefile_CC=' -n32'; break ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! fi ! rm -f conftest.$ac_objext ! break ! done ! CC=$ac_save_CC ! rm -f conftest.$ac_ext ! fi fi + echo "$as_me:2576: result: $ac_cv_sys_largefile_CC" >&5 + echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:2582: checking for _FILE_OFFSET_BITS value needed for large files" >&5 + echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 + if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF + #line 2590 "configure" + #include "confdefs.h" + #include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; + int + main () + { ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:2610: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:2613: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:2616: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2619: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! break else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 fi + rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF + #line 2628 "configure" + #include "confdefs.h" + #define _FILE_OFFSET_BITS 64 + #include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; + int + main () + { ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:2649: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:2652: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:2655: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2658: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_sys_file_offset_bits=64; break ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 fi + rm -f conftest.$ac_objext conftest.$ac_ext + break + done fi + echo "$as_me:2669: result: $ac_cv_sys_file_offset_bits" >&5 + echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 + if test "$ac_cv_sys_file_offset_bits" != no; then ! cat >>confdefs.h <&5 ! echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 ! if test "${ac_cv_sys_large_files+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! while :; do ! ac_cv_sys_large_files=no ! cat >conftest.$ac_ext <<_ACEOF ! #line 2687 "configure" ! #include "confdefs.h" ! #include ! /* Check that off_t can represent 2**63 - 1 correctly. ! We can't simply define LARGE_OFF_T to be 9223372036854775807, ! since some C++ compilers masquerading as C compilers ! incorrectly reject 9223372036854775807. */ ! #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ! int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ! && LARGE_OFF_T % 2147483647 == 1) ! ? 1 : -1]; ! int ! main () ! { + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:2707: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2710: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2713: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2716: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break + else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF + #line 2725 "configure" + #include "confdefs.h" + #define _LARGE_FILES 1 + #include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; + int + main () + { + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:2746: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2749: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2752: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2755: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break + else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest.$ac_objext conftest.$ac_ext + break + done + fi + echo "$as_me:2766: result: $ac_cv_sys_large_files" >&5 + echo "${ECHO_T}$ac_cv_sys_large_files" >&6 + if test "$ac_cv_sys_large_files" != no; then ! cat >>confdefs.h <&6 ! echo "configure:1758: checking whether ${CC-cc} needs -traditional" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" ! cat > conftest.$ac_ext < Autoconf TIOCGETP ! EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "$ac_pattern" >/dev/null 2>&1; then - rm -rf conftest* ac_cv_prog_gcc_traditional=yes else - rm -rf conftest* ac_cv_prog_gcc_traditional=no fi rm -f conftest* - if test $ac_cv_prog_gcc_traditional = no; then ! cat > conftest.$ac_ext < Autoconf TCGETA ! EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "$ac_pattern" >/dev/null 2>&1; then - rm -rf conftest* ac_cv_prog_gcc_traditional=yes fi --- 2819,2862 ---- if test "$opt_static_link" = yes; then ! # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2 ! if test -n "$GCC" || test "$ac_cv_c_compiler_gnu" = "yes"; then STATIC_LD="-static" ! case "$host_os" in ! solaris2*) ;; ! *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental ! esac fi fi ! if test $ac_cv_c_compiler_gnu = yes; then ! echo "$as_me:2832: checking whether $CC needs -traditional" >&5 ! echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 ! if test "${ac_cv_prog_gcc_traditional+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_pattern="Autoconf.*'x'" ! cat >conftest.$ac_ext <<_ACEOF ! #line 2839 "configure" #include "confdefs.h" #include Autoconf TIOCGETP ! _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "$ac_pattern" >/dev/null 2>&1; then ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then ! cat >conftest.$ac_ext <<_ACEOF ! #line 2854 "configure" #include "confdefs.h" #include Autoconf TCGETA ! _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "$ac_pattern" >/dev/null 2>&1; then ac_cv_prog_gcc_traditional=yes fi *************** *** 1793,1798 **** fi fi ! ! echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6 if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" --- 2865,2870 ---- fi fi ! echo "$as_me:2867: result: $ac_cv_prog_gcc_traditional" >&5 ! echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" *************** *** 1800,1937 **** fi ! ! ! if test "$opt_readline" = yes && test "$opt_with_installed_readline" = "yes" then - - if test -z "$TERMCAP_LIB" ; then - if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else ! echo $ac_n "checking which library has the termcap functions""... $ac_c" 1>&6 ! echo "configure:1815: checking which library has the termcap functions" >&5 _bash_needmsg= fi ! if eval "test \"`echo '$''{'bash_cv_termcap_lib'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6 ! echo "configure:1822: checking for tgetent in -ltermcap" >&5 ! ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! ac_save_LIBS="$LIBS" LIBS="-ltermcap $LIBS" ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=no" ! fi ! rm -f conftest* ! LIBS="$ac_save_LIBS" ! ! fi ! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ! echo "$ac_t""yes" 1>&6 bash_cv_termcap_lib=libtermcap else ! echo "$ac_t""no" 1>&6 ! echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 ! echo "configure:1860: checking for tgetent in -lcurses" >&5 ! ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! ac_save_LIBS="$LIBS" ! LIBS="-lcurses $LIBS" ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=no" ! fi ! rm -f conftest* ! LIBS="$ac_save_LIBS" ! fi ! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! bash_cv_termcap_lib=libcurses else ! echo "$ac_t""no" 1>&6 ! echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 ! echo "configure:1898: checking for tgetent in -lncurses" >&5 ! ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! ac_save_LIBS="$LIBS" LIBS="-lncurses $LIBS" ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=no" fi - rm -f conftest* - LIBS="$ac_save_LIBS" fi - if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - bash_cv_termcap_lib=libncurses - else - echo "$ac_t""no" 1>&6 - bash_cv_termcap_lib=gnutermcap - fi fi --- 2872,3104 ---- fi ! if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no" then + echo opt_with_installed_readline = $opt_with_installed_readline + # If the user specified --with-installed-readline=PREFIX and PREFIX + # is not `yes', set ac_cv_rl_prefix to PREFIX + test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else ! echo "$as_me:2884: checking which library has the termcap functions" >&5 ! echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 _bash_needmsg= fi ! if test "${bash_cv_termcap_lib+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! echo "$as_me:2891: checking for tgetent in -ltermcap" >&5 ! echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 ! if test "${ac_cv_lib_termcap_tgetent+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" ! cat >conftest.$ac_ext <<_ACEOF ! #line 2899 "configure" #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char tgetent (); ! int ! main () ! { ! tgetent (); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:2918: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:2921: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:2924: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2927: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_lib_termcap_tgetent=yes ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ac_cv_lib_termcap_tgetent=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! echo "$as_me:2938: result: $ac_cv_lib_termcap_tgetent" >&5 ! echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 ! if test $ac_cv_lib_termcap_tgetent = yes; then bash_cv_termcap_lib=libtermcap else ! echo "$as_me:2943: checking for tgetent in -ltinfo" >&5 ! echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 ! if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ac_check_lib_save_LIBS=$LIBS ! LIBS="-ltinfo $LIBS" ! cat >conftest.$ac_ext <<_ACEOF ! #line 2951 "configure" #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char tgetent (); ! int ! main () ! { ! tgetent (); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:2970: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:2973: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:2976: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:2979: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_lib_tinfo_tgetent=yes ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ac_cv_lib_tinfo_tgetent=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! echo "$as_me:2990: result: $ac_cv_lib_tinfo_tgetent" >&5 ! echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 ! if test $ac_cv_lib_tinfo_tgetent = yes; then ! bash_cv_termcal_lib=libtinfo ! else ! echo "$as_me:2995: checking for tgetent in -lcurses" >&5 ! echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 ! if test "${ac_cv_lib_curses_tgetent+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ac_check_lib_save_LIBS=$LIBS ! LIBS="-lcurses $LIBS" ! cat >conftest.$ac_ext <<_ACEOF ! #line 3003 "configure" ! #include "confdefs.h" ! /* Override any gcc2 internal prototype to avoid an error. */ ! #ifdef __cplusplus ! extern "C" ! #endif ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char tgetent (); ! int ! main () ! { ! tgetent (); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:3022: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:3025: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:3028: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:3031: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_lib_curses_tgetent=yes ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ac_cv_lib_curses_tgetent=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! echo "$as_me:3042: result: $ac_cv_lib_curses_tgetent" >&5 ! echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 ! if test $ac_cv_lib_curses_tgetent = yes; then ! bash_cv_termcap_lib=libcurses else ! echo "$as_me:3047: checking for tgetent in -lncurses" >&5 ! echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 ! if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" ! cat >conftest.$ac_ext <<_ACEOF ! #line 3055 "configure" #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char tgetent (); ! int ! main () ! { ! tgetent (); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:3074: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:3077: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:3080: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:3083: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_lib_ncurses_tgetent=yes ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ac_cv_lib_ncurses_tgetent=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! echo "$as_me:3094: result: $ac_cv_lib_ncurses_tgetent" >&5 ! echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 ! if test $ac_cv_lib_ncurses_tgetent = yes; then ! bash_cv_termcap_lib=libncurses else ! bash_cv_termcap_lib=gnutermcap fi fi fi *************** *** 1942,1949 **** if test "X$_bash_needmsg" = "Xyes"; then ! echo $ac_n "checking which library has the termcap functions""... $ac_c" 1>&6 ! echo "configure:1946: checking which library has the termcap functions" >&5 fi ! echo "$ac_t""using $bash_cv_termcap_lib" 1>&6 if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" --- 3109,3117 ---- if test "X$_bash_needmsg" = "Xyes"; then ! echo "$as_me:3111: checking which library has the termcap functions" >&5 ! echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 fi ! echo "$as_me:3114: result: using $bash_cv_termcap_lib" >&5 ! echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" *************** *** 1953,1956 **** --- 3121,3127 ---- TERMCAP_LIB=-ltermcap TERMCAP_DEP= + elif test $bash_cv_termcap_lib = libtinfo; then + TERMCAP_LIB=-ltinfo + TERMCAP_DEP= elif test $bash_cv_termcap_lib = libncurses; then TERMCAP_LIB=-lncurses *************** *** 1961,1994 **** fi ! fi ! test "x$prefix" = xNONE && _rl_prefix=$ac_default_prefix || _rl_prefix=${prefix} ! test "x$exec_prefix" = xNONE && _rl_exec_prefix=${_rl_prefix} || _rl_exec_prefix=${exec_prefix} ! echo $ac_n "checking version of installed readline library""... $ac_c" 1>&6 ! echo "configure:1970: checking version of installed readline library" >&5 ! _rl_version=`exec_prefix=${_rl_exec_prefix} ${CONFIG_SHELL-/bin/sh} ${srcdir}/support/rlvers.sh -C "${CC}" -L ${libdir} -I ${includedir} -T ${TERMCAP_LIB}` ! echo "$ac_t""$_rl_version" 1>&6 ! case "$_rl_version" in 4.[2-9]*|5*|6*|7*|8*|9*) ;; ! *) opt_with_installed_readline=no ! echo "configure: warning: installed readline library is too old to be linked with bash" 1>&2 ! echo "configure: warning: using private bash version" 1>&2 ;; esac - unset _rl_version _rl_prefix _rl_exec_prefix fi if test $opt_readline = yes; then ! cat >> confdefs.h <<\EOF #define READLINE 1 EOF READLINE_LIB=-lreadline ! if test "$opt_with_installed_readline" = "yes" ; then ! RL_LIBDIR='$(libdir)' READLINE_DEP= - RL_INCLUDE='-I$(includedir)' else RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' --- 3132,3292 ---- fi ! echo "$as_me:3134: checking version of installed readline library" >&5 ! echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6 ! ! # What a pain in the ass this is. ! ! # save cpp and ld options ! _save_CFLAGS="$CFLAGS" ! _save_LDFLAGS="$LDFLAGS" ! _save_LIBS="$LIBS" ! ! # Don't set ac_cv_rl_prefix if the caller has already assigned a value. This ! # allows the caller to do something like $_rl_prefix=$withval if the user ! # specifies --with-installed-readline=PREFIX as an argument to configure ! ! if test -z "$ac_cv_rl_prefix"; then ! test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} ! fi ! ! eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include ! eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib ! ! LIBS="$LIBS -lreadline ${TERMCAP_LIB}" ! CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" ! LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" ! if test "$cross_compiling" = yes; then ! ac_cv_rl_version='4.2' ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line 3163 "configure" ! #include "confdefs.h" ! ! #include ! #include ! ! main() ! { ! FILE *fp; ! fp = fopen("conftest.rlv", "w"); ! if (fp == 0) exit(1); ! fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); ! fclose(fp); ! exit(0); ! } ! ! _ACEOF ! rm -f conftest$ac_exeext ! if { (eval echo "$as_me:3181: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:3184: \$? = $ac_status" >&5 ! (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ! { (eval echo "$as_me:3186: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:3189: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_rl_version=`cat conftest.rlv` ! else ! echo "$as_me: program exited with status $ac_status" >&5 ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ac_cv_rl_version='0.0' ! fi ! rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ! fi ! ! CFLAGS="$_save_CFLAGS" ! LDFLAGS="$_save_LDFLAGS" ! LIBS="$_save_LIBS" ! ! RL_MAJOR=0 ! RL_MINOR=0 ! ! # ( ! case "$ac_cv_rl_version" in ! 2*|3*|4*|5*|6*|7*|8*|9*) ! RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` ! RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:a-zA-Z*$::'` ! ;; ! esac ! ! # ((( ! case $RL_MAJOR in ! [0-9][0-9]) _RL_MAJOR=$RL_MAJOR ;; ! [0-9]) _RL_MAJOR=0$RL_MAJOR ;; ! *) _RL_MAJOR=00 ;; ! esac ! ! # ((( ! case $RL_MINOR in ! [0-9][0-9]) _RL_MINOR=$RL_MINOR ;; ! [0-9]) _RL_MINOR=0$RL_MINOR ;; ! *) _RL_MINOR=00 ;; ! esac ! ! RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" ! ! # Readline versions greater than 4.2 have these defines in readline.h ! if test $ac_cv_rl_version = '0.0' ; then ! { echo "$as_me:3235: WARNING: Could not test version of installed readline library." >&5 ! echo "$as_me: WARNING: Could not test version of installed readline library." >&2;} ! elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then ! # set these for use by the caller ! RL_PREFIX=$ac_cv_rl_prefix ! RL_LIBDIR=$ac_cv_rl_libdir ! RL_INCLUDEDIR=$ac_cv_rl_includedir ! echo "$as_me:3242: result: $ac_cv_rl_version" >&5 ! echo "${ECHO_T}$ac_cv_rl_version" >&6 ! else ! ! cat >>confdefs.h <>confdefs.h <>confdefs.h <&5 ! echo "${ECHO_T}$ac_cv_rl_version" >&6 ! ! fi ! ! case "$ac_cv_rl_version" in 4.[2-9]*|5*|6*|7*|8*|9*) ;; ! *) opt_with_installed_readline=no ! { echo "$as_me:3271: WARNING: installed readline library is too old to be linked with bash" >&5 ! echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} ! { echo "$as_me:3273: WARNING: using private bash version" >&5 ! echo "$as_me: WARNING: using private bash version" >&2;} ;; esac fi if test $opt_readline = yes; then ! cat >>confdefs.h <<\EOF #define READLINE 1 EOF READLINE_LIB=-lreadline ! if test "$opt_with_installed_readline" != "no" ; then ! case "$RL_INCLUDEDIR" in ! /usr/include) ;; ! *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ! esac READLINE_DEP= else RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' *************** *** 2001,2005 **** if test $opt_history = yes || test $opt_bang_history = yes; then if test $opt_history = yes; then ! cat >> confdefs.h <<\EOF #define HISTORY 1 EOF --- 3299,3303 ---- if test $opt_history = yes || test $opt_bang_history = yes; then if test $opt_history = yes; then ! cat >>confdefs.h <<\EOF #define HISTORY 1 EOF *************** *** 2007,2011 **** fi if test $opt_bang_history = yes; then ! cat >> confdefs.h <<\EOF #define BANG_HISTORY 1 EOF --- 3305,3309 ---- fi if test $opt_bang_history = yes; then ! cat >>confdefs.h <<\EOF #define BANG_HISTORY 1 EOF *************** *** 2013,2020 **** fi HISTORY_LIB=-lhistory ! if test "$opt_with_installed_readline" = "yes"; then ! HIST_LIBDIR='$(libdir)' HISTORY_DEP= ! RL_INCLUDE='-I$(includedir)' else HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' --- 3311,3321 ---- fi HISTORY_LIB=-lhistory ! if test "$opt_with_installed_readline" != "no"; then ! HIST_LIBDIR=$RL_LIBDIR HISTORY_DEP= ! case "$RL_INCLUDEDIR" in ! /usr/include) ;; ! *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ! esac else HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' *************** *** 2026,2037 **** fi - - - - - - - - # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or --- 3327,3330 ---- *************** *** 2041,2059 **** # IRIX /sbin/install # AIX /bin/install # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. ! echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:2049: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then ! if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" for ac_dir in $PATH; do # Account for people who put trailing slashes in PATH elements. ! case "$ac_dir/" in ! /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. --- 3334,3356 ---- # IRIX /sbin/install # AIX /bin/install + # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. ! echo "$as_me:3341: checking for a BSD compatible install" >&5 ! echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then ! if test "${ac_cv_path_install+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ac_save_IFS=$IFS; IFS=$ac_path_separator for ac_dir in $PATH; do + IFS=$ac_save_IFS # Account for people who put trailing slashes in PATH elements. ! case $ac_dir/ in ! / | ./ | .// | /cC/* \ ! | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ ! | /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. *************** *** 2061,2069 **** # by default. for ac_prog in ginstall scoinst install; do ! if test -f $ac_dir/$ac_prog; then if test $ac_prog = install && ! grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : else ac_cv_path_install="$ac_dir/$ac_prog -c" --- 3358,3370 ---- # by default. for ac_prog in ginstall scoinst install; do ! if $as_executable_p "$ac_dir/$ac_prog"; then if test $ac_prog = install && ! grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : + elif test $ac_prog = install && + grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : else ac_cv_path_install="$ac_dir/$ac_prog -c" *************** *** 2075,2083 **** esac done - IFS="$ac_save_IFS" fi if test "${ac_cv_path_install+set}" = set; then ! INSTALL="$ac_cv_path_install" else # As a last resort, use the slow shell script. We don't cache a --- 3376,3383 ---- esac done fi if test "${ac_cv_path_install+set}" = set; then ! INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a *************** *** 2085,2092 **** # break other packages using the cache if that directory is # removed, or if the path is relative. ! INSTALL="$ac_install_sh" fi fi ! echo "$ac_t""$INSTALL" 1>&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. --- 3385,3393 ---- # break other packages using the cache if that directory is # removed, or if the path is relative. ! INSTALL=$ac_install_sh fi fi ! echo "$as_me:3390: result: $INSTALL" >&5 ! echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. *************** *** 2094,2098 **** test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ! test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' --- 3395,3399 ---- test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ! test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' *************** *** 2100,2208 **** # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2104: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_AR="ar" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! AR="$ac_cv_prog_AR" if test -n "$AR"; then ! echo "$ac_t""$AR" 1>&6 else ! echo "$ac_t""no" 1>&6 fi test -n "$ARFLAGS" || ARFLAGS="cr" ! # Extract the first word of "ranlib", so it can be a program name with args. ! set dummy ranlib; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2134: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_RANLIB="ranlib" ! break ! fi ! done ! IFS="$ac_save_ifs" ! test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" fi fi ! RANLIB="$ac_cv_prog_RANLIB" if test -n "$RANLIB"; then ! echo "$ac_t""$RANLIB" 1>&6 else ! echo "$ac_t""no" 1>&6 fi for ac_prog in 'bison -y' byacc do ! # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2166: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_YACC="$ac_prog" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! YACC="$ac_cv_prog_YACC" if test -n "$YACC"; then ! echo "$ac_t""$YACC" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" ! echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:2197: checking whether ${MAKE-make} sets \${MAKE}" >&5 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftestmake <<\EOF all: @echo 'ac_maketemp="${MAKE}"' EOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. ! eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes --- 3401,3560 ---- # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 ! echo "$as_me:3403: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_AR+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else ! ac_save_IFS=$IFS; IFS=$ac_path_separator ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! IFS=$ac_save_IFS ! test -z "$ac_dir" && ac_dir=. ! $as_executable_p "$ac_dir/$ac_word" || continue ! ac_cv_prog_AR="" ! echo "$as_me:3418: found $ac_dir/$ac_word" >&5 ! break ! done ! ! test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" fi fi ! AR=$ac_cv_prog_AR if test -n "$AR"; then ! echo "$as_me:3427: result: $AR" >&5 ! echo "${ECHO_T}$AR" >&6 else ! echo "$as_me:3430: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi test -n "$ARFLAGS" || ARFLAGS="cr" ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ! set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ! echo "$as_me:3438: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_RANLIB+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else ! ac_save_IFS=$IFS; IFS=$ac_path_separator ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! IFS=$ac_save_IFS ! test -z "$ac_dir" && ac_dir=. ! $as_executable_p "$ac_dir/$ac_word" || continue ! ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ! echo "$as_me:3453: found $ac_dir/$ac_word" >&5 ! break ! done ! fi fi ! RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then ! echo "$as_me:3461: result: $RANLIB" >&5 ! echo "${ECHO_T}$RANLIB" >&6 ! else ! echo "$as_me:3464: result: no" >&5 ! echo "${ECHO_T}no" >&6 ! fi ! ! fi ! if test -z "$ac_cv_prog_RANLIB"; then ! ac_ct_RANLIB=$RANLIB ! # Extract the first word of "ranlib", so it can be a program name with args. ! set dummy ranlib; ac_word=$2 ! echo "$as_me:3473: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! if test -n "$ac_ct_RANLIB"; then ! ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ! else ! ac_save_IFS=$IFS; IFS=$ac_path_separator ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! IFS=$ac_save_IFS ! test -z "$ac_dir" && ac_dir=. ! $as_executable_p "$ac_dir/$ac_word" || continue ! ac_cv_prog_ac_ct_RANLIB="ranlib" ! echo "$as_me:3488: found $ac_dir/$ac_word" >&5 ! break ! done ! ! test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" ! fi ! fi ! ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ! if test -n "$ac_ct_RANLIB"; then ! echo "$as_me:3497: result: $ac_ct_RANLIB" >&5 ! echo "${ECHO_T}$ac_ct_RANLIB" >&6 ! else ! echo "$as_me:3500: result: no" >&5 ! echo "${ECHO_T}no" >&6 ! fi ! ! RANLIB=$ac_ct_RANLIB else ! RANLIB="$ac_cv_prog_RANLIB" fi for ac_prog in 'bison -y' byacc do ! # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 ! echo "$as_me:3513: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_YACC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else ! ac_save_IFS=$IFS; IFS=$ac_path_separator ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! IFS=$ac_save_IFS ! test -z "$ac_dir" && ac_dir=. ! $as_executable_p "$ac_dir/$ac_word" || continue ! ac_cv_prog_YACC="$ac_prog" ! echo "$as_me:3528: found $ac_dir/$ac_word" >&5 ! break ! done ! fi fi ! YACC=$ac_cv_prog_YACC if test -n "$YACC"; then ! echo "$as_me:3536: result: $YACC" >&5 ! echo "${ECHO_T}$YACC" >&6 else ! echo "$as_me:3539: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" ! echo "$as_me:3547: checking whether ${MAKE-make} sets \${MAKE}" >&5 ! echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` ! if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.make <<\EOF all: @echo 'ac_maketemp="${MAKE}"' EOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. ! eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes *************** *** 2210,2224 **** eval ac_cv_prog_make_${ac_make}_set=no fi ! rm -f conftestmake fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then ! echo "$ac_t""yes" 1>&6 SET_MAKE= else ! echo "$ac_t""no" 1>&6 SET_MAKE="MAKE=${MAKE-make}" fi - case "$host_os" in opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; --- 3562,3577 ---- eval ac_cv_prog_make_${ac_make}_set=no fi ! rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then ! echo "$as_me:3567: result: yes" >&5 ! echo "${ECHO_T}yes" >&6 SET_MAKE= else ! echo "$as_me:3571: result: no" >&5 ! echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi case "$host_os" in opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; *************** *** 2226,3054 **** esac ! # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works ! # for constant arguments. Useless! ! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ! echo "configure:2233: checking for working alloca.h" >&5 ! if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! int main() { ! char *p = alloca(2 * sizeof(int)); ! ; return 0; } ! EOF ! if { (eval echo configure:2245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! ac_cv_header_alloca_h=yes else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! ac_cv_header_alloca_h=no ! fi ! rm -f conftest* fi ! ! echo "$ac_t""$ac_cv_header_alloca_h" 1>&6 ! if test $ac_cv_header_alloca_h = yes; then ! cat >> confdefs.h <<\EOF ! #define HAVE_ALLOCA_H 1 ! EOF fi ! echo $ac_n "checking for alloca""... $ac_c" 1>&6 ! echo "configure:2266: checking for alloca" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < ! # define alloca _alloca ! # else ! # if HAVE_ALLOCA_H ! # include ! # else ! # ifdef _AIX ! #pragma alloca ! # else ! # ifndef alloca /* predefined by HP cc +Olibcalls */ ! char *alloca (); ! # endif ! # endif ! # endif ! # endif #endif ! int main() { ! char *p = (char *) alloca(1); ! ; return 0; } ! EOF ! if { (eval echo configure:2299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! ac_cv_func_alloca_works=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! ac_cv_func_alloca_works=no ! fi ! rm -f conftest* ! fi ! echo "$ac_t""$ac_cv_func_alloca_works" 1>&6 ! if test $ac_cv_func_alloca_works = yes; then ! cat >> confdefs.h <<\EOF ! #define HAVE_ALLOCA 1 EOF fi ! if test $ac_cv_func_alloca_works = no; then ! # The SVR3 libPW and SVR4 libucb both contain incompatible functions ! # that cause trouble. Some versions do not even contain alloca or ! # contain a buggy version. If you still want to use their alloca, ! # use ar to extract alloca.o from them instead of compiling alloca.c. ! ALLOCA=alloca.${ac_objext} ! cat >> confdefs.h <<\EOF ! #define C_ALLOCA 1 ! EOF ! echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 ! echo "configure:2331: checking whether alloca needs Cray hooks" >&5 ! if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext <&5 | ! egrep "webecray" >/dev/null 2>&1; then ! rm -rf conftest* ! ac_cv_os_cray=yes else ! rm -rf conftest* ! ac_cv_os_cray=no fi ! rm -f conftest* ! fi ! ! echo "$ac_t""$ac_cv_os_cray" 1>&6 ! if test $ac_cv_os_cray = yes; then ! for ac_func in _getb67 GETB67 getb67; do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:2361: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); ! #endif ! ; return 0; } ! EOF ! if { (eval echo configure:2389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! cat >> confdefs.h <&6 fi ! done ! fi ! ! echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ! echo "configure:2416: checking stack direction for C alloca" >&5 ! if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! if test "$cross_compiling" = yes; then ! ac_cv_c_stack_direction=0 else ! cat > conftest.$ac_ext < addr) ? 1 : -1; ! } main () { ! exit (find_stack_direction() < 0); } ! EOF ! if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ! then ! ac_cv_c_stack_direction=1 else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -fr conftest* ! ac_cv_c_stack_direction=-1 fi - rm -fr conftest* fi - fi ! echo "$ac_t""$ac_cv_c_stack_direction" 1>&6 ! cat >> confdefs.h <&6 ! echo "configure:2465: checking whether getpgrp takes no argument" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_getpgrp_void'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! if test "$cross_compiling" = yes; then ! { echo "configure: error: cannot check getpgrp if cross compiling" 1>&2; exit 1; } else ! cat > conftest.$ac_ext < ! #include ! ! int pid; ! int pg1, pg2,