This file lists the changes made since beginning work on porting new
versions of Bash.

Changes for January 9, 2000:

* Makefile.in: Remove tcsetatr.c and tcflush.c from build so the native
  versions in DJGPP 2.03 will be used.

Changes for December 26, 1999:

* input.c (fd_to_buffered_stream): Do not allow stdin to be buffered in
  case it's redirected.

Changes for September 22, 1999:

* dosutil.c (dosutil_chdir): Don't add SYSROOT to '/dev/' type paths.

Changes for August 30, 1999:

* subst.c (sv_sysroot): Handle setting SYSROOT to ''.
* dosutil.c (dosutil_import_environment_variables): Likewise.

Changes for August 14, 1999:

* bashline.c (command_word_completion_function): Turn relative paths with
  drive letters into absolute paths.

Changes for August 8, 1999:

* dosutil.h (dosutil_maybe_remember_command): Declare.
* dosutil.c (dosutil_maybe_remember_command): New. Expand '/dev/env' paths
  and store in the hash table.
* findcmd.c (search_for_command): Inline the DOS specific changes that
  were previously separated.
  Add call to dosutil_maybe_remember_command for absolute paths.

Changes for August 7, 1999:

* findcmd.c (make_full_pathname): Don't allow two slashes between the path
  and the filename. Noted by Jeff Willians.

Changes for August 4, 1999:

* dosutil.c (dosutil_fix_variable): Unconditionally fix variable.
  (dosutil_make_export_path): Test for SYSROOT after /dev/ test.

Changes for August 3, 1999:

* variables.c (initialize_shell_variables): Add att_unixpath attribute to
  OLDPWD and PWD.
* dosutil.c (need_fix_variables): Add COMSPEC.

Changes for August 2, 1999:

* dosutil.c (dosutil_make_export_path): Don't check for /dev/ drivename
  if the second character is a path separator. Reported by Teun Burgers.
* variables.h (att_unixypath): Define.
  (unixpath_p): Define.
* variables.c (initialize_shell_variables): Include att_unixypath in a
  variable's attributes if it is a variable that is affected by
  PATH_SEPARATOR.
  (set_home_var): Include att_unixypath.
  (make_var_array): Test for att_unixypath.

Changes for July 29, 1999:

* dosutil.c (dosutil_is_root_directory_pathname): New function. Is the path
  a root directory.
* general.c (canonicalize_pathname): Use it.
* dosutil.h (dosutil_is_root_directory_pathname): New prototype.
* subst.c (sv_test_finds_exe): New. Renamed from sv_dos_test_hack.
* subst.h (sv_test_finds_exe): Likewise.
* variables.c (special_vars): Rename DOS_TEST_HACK to TEST_FINDS_EXE.
* dosutil.c (dosutil_expand_path): Let SYSROOT be expanded even when
  PATH_EXPAND is not Y.

Changes for July 28, 1999:

* test.c (unary_test): Correct bad argument to test_stat. Bug reported by
  Eli Zaretskii.

* lib/readline/complete.c (make_quoted_replacement): Test token for non-NULL
  before checking for ':'. Bug reported by Eli Zaretskii.

Changes for July 26, 1999:

* lib/readline/histfile.c (read_history_range): Only strip a CR if it follows
  an LF.

Changes for July 25, 1999:

* lib/readline/histfile.c (history_truncate_file, history_do_write): Handle
  initial dot in history filename like in read_history_range.
  Reported by Eli Zaretskii.
* lib/readline/complete.c: When testing for a drive name, don't bother
  validating the drive letter. Reported by Eli Zaretskii.

Changes for July 22, 1999:

* The '/dev/env' feature, coming in DJGPP 2.03, is now supported.
* Changed ACX_PROG_YACC_YTAB_NAME to ACX_PROG_YACC_OUTPUT_ROOT.

Changes for July 16, 1999:

* subst.c (sv_dos_test_hack): New.
* subst.h: (sv_dos_test_hack): Declare.
* variables.c (special_vars): Add DOS_TEST_HACK to array.
* dosutil.c (dosutil_test_hack): New variable.
* dosutil.h (dosutil_test_hack): Declare it extern.
* test.c (unary_test): Use hack for 'test -r' and 'test -f'.

Changes for July 11, 1999:

* lib/readline/kill.c: Define a version of rl_paste_from_clipboard for DJGPP.
* lib/readline/funmap.c: Let paste-from-clipboard option be defined.
* lib/readline/funmap.h: Define rl_paste_from_clipboard for DJGPP.

Changes for July 9, 1999:

* test.c: Define EACCESS to use access.

Changes for July 7, 1999:

* builtins/cd.def (pwd_builtin):  Use dosutil_path_expand on the directory.

Changes for July 6, 1999:

* lib/readline/histfile.c (read_history_range): If the first character
  in the file's name is a period and the file couldn't be opened,
  replace the period with an underscore and try again.

Changes for July 1, 1999:

Fix filename completion bug reported by Eli Zaretskii:
* bashline.c (initialize_readline): Do not let ':' be quoted in filenames.
* lib/readline/complete.c (find_completion_word): Likewise.
  (make_quoted_replacemane): Likewise.

Changes for June 30, 1999:

* dosutil.c (dosutil_add_executable_suffix): Replace expensive calls to
  stat with calls to _chmod.
* shell.c (main): Set env to environ since DOS-specific startup routines
  fiddle with the environment and env is likely to contain invalid pointers.

Changes for June 29, 1999:

* aclocal.m4: New macros ACX_CHECK_PATHNAME_STYLE_DOS, ACX_CHECK_DOS_FILESYS,
  ACX_FUNC_FORK, ACX_PROG_YACC_YTAB_NAME
* config.h.in: Add HAVE_PATHNAME_STYLE_DOS, HAVE_DOS_FILESYS_LIMITATIONS,
  HAVE_NO_FORK, HAVE_Y_TAB_H.
* execute_cmd.c: Use HAVE_Y_TAB_H.
* print_cmd.c: Likewise.
* lib/readline: Use HAVE_PATHNAME_STYLE_DOS and HAVE_DOS_FILESYS_LIMITATIONS.

Changes for June 21, 1999:

* dosutil.c (dosutil_import_environment_variables): Fix handling of 'x:'
  from last change.
* subst.c (sv_sysroot): Likewise.

Changes for June 18, 1999:

* dosutil.c (dosutil_set_tmpdir): Fix lockup when TMPDIR is missing.
  Fix crash when variable just contains a drive name. Reported by
  Michel de Ruiter.

Changes for June 15, 1999:

* dosutil.c (dosutil_import_environment_variables): Force path for SYSROOT
  to be absolute.
* subst.c (sv_sysroot): Likewise.

Changes for June 14, 1999:

* builtins/psize.sh: Do not set TMPDIR if already set.
  From Martin Stroemburg.

Changes for June 9, 1999:

* general.c (canonicalize_pathname): Disable code that adds drive name
  when '/' is the first character.

Changes for June 7, 1999:

* lib/readline: Remove obsolete code. Tweak other changes.

Changes for May 21, 1999:

* general.c (canonicalize_pathname): Minor tweak to fix bug with
  SYSROOT=x: and cd. Reported by Jeff Williams.

Changes for May 19, 1999:

* tminit.c: Disable FSEXT code. Only use the *_raw functions if the
  handle is in binary mode.

Changes for May 18, 1999:

* general.c (canonicalize_pathname): Partially rework the handling of
  DOS-style filenames to fix bug reported by Michel de Ruiter.

Changes for May 17, 1999:

* dosutil.c (dosutil_set_tmpdir): New. Find a temporary directory.
(dosutil_tmpdir): New character array.
(dosutil_tmpdir_len): New unsigned int. Holds length of dosutil_tmpdir.
* dosutil.h (dosutil_set_tmpdir): Add prototype.
(dosutil_tmpdir): Add extern.
(dosutil_tmpdir_len): Add extern.
* shell.c (main): If a temporary directory could not be found, quit.
* redir.c (here_document_to_fd): Use dosutil_tmpdir.
* subst.c (make_named_pipe): Likewise.
* dosutil.c (dosutil_pipe, dosutil_make_response_file): Likewise.

Changes for May 10, 1999:

* variables.c (get_bash_name): Check for DOS-style absolute pathname.
* find_cmd.c (find_absolute_program): Treat FS_EXEC_PREFERRED like FS_EXISTS.

Changes for April 26, 1999:

* shell.c (open_shell_script): Remove conditionalized code.
* subst.c (process_substitute): Likewise.
* general.c (move_to_high_fd): ...and put it here.

Changes for April 23, 1999:

* general.c (make_absolute): Fix case of when contents of SYSROOT is needed.
Changes for April 19, 1999:

* tminit (_TRANS_NOSHIFT): Remove the '0'.
  (_TRANS_ARROW): Delete. Arrow keys once again use _TRANS_NOSHIFT.

Changes for April 14, 1999:

* subst.c (command_substitute): Use SEVAL_NOHISTORY instead of -1.
  (param_expand): Do not free memory after calling command_substitute().
  The memory was already free'd by parse_and_execute().

Changes for April 8, 1999:

* variables.c (initialize_shell_variables): Use _bhist not _bshhist
  in order to be consistent with the other SFN changes.
* tminit.c (__libc_use_function_and_arrow_keys): Default to 1.
  (__libc_has_extended_keystroke): Now an unsigned int instead of signed int.
  (*_ate): Rename to *_at_enh.
  (__direct_keysense_simulator): Deleted.
  (__direct_keyinput_simulator): Deleted.
  (__direct_ctrlsense_simulator): Deleted.
  (__direct_output_tab_simulator): Deleted.
  (__direct_output_simulator): Deleted.
  (__direct_outputns_simulator): Deleted.
  (__direct_outputs_simulator): Deleted.
  (_TRANS_ARROW): New macro.
  (trans_mapping_chras_at): Renamed to trans_mapping_chars_at.
  (__direct_check_extened_keystroke_at):
    Renamed to __direct_check_extended_keystroke_at.
  (__direct_check_extended_keystroke_at):
    Use _TRANS_ARROW for arrow keys when shift is not pressed.
  (__trans_mapping_chars_at): Change code 001 to 003 and code 003 to 001.
* shell.c (__libc_termios_disable_bios_io): Delete extern declaration.
  (__libc_termios_enable_bios_io): Delete extern declaration.
  (main): Remove code that called the *_bios_io functions.
* lib/readline/readline.c (bind_arrow_keys): Remove MSDOS specific section.

Changes for April 6, 1999:

* redir.c (do_redirections_internal): Remove calls to dosutil_try_remove.
  The call to it in execute_command makes calls here unneccessary.
* dosutil.c (dosutil_try_delay_remove): If errno is ENOENT after
  the remove call, remove the filename from the list.
* sig.c (termination_unwind_protect): Use routine for SIGINT suggested
  by Eli Zaretskii.

Changes for April 1, 1999:

* configure.in: Disable AC_CHECK_TYPE for time_t, use BASH_CHECK_TYPE instead.
* configure: Regenerate.
* sig.c (termination_unwind_protect): Exit with -1 when SIGINT is raised
  instead of calling the default SIGINT handler.
* tcsetatr.c (tcsetattr): Simply code that calls __djgpp_set_ctrl_c.
* parse.y (parse_matched_pair): Fix problem with nested ${...} expansions.
  From Chet Ramey.

Changes for March 29, 1999:

* dosutil.c: Improved code for ignoring drive name.

Changes for March 26, 1999:

From Michel de Ruiter:
* lib/readline/histfile.c
  (history_truncate_file): Set file_size, like chars_read, to
  the return value of the read() call.
* lib/termcap/termcap.c (valid_filename_p): Check for '\' too.

Changes for March 25, 1999:

* general.c (make_absolute): If dot_path is "/" and a root is defined,
  insert the contents of dosutil_sysroot.
* execute_cmd.c
  (expand_arguments_for_external_command): Assign words->word->word
  to the return value of dosutil_expand_path too.

Changes for March 24, 1999:

* dosutil.c (dosutil_add_executable_suffix): If the file already exists
  and is not a directory, then don't attempt to add suffixes.
  This change supercedes the one from February 28th.
  Also, stop searching for the dot when a ':' is found.

* test.c (test_eaccess): Treat F_OK like R_OK in switch block.

Changes for March 22, 1999:

* findcmd.c (search_for_command): Search for command in hash table if
  command is in /bin/ or /usr/.
* variables.c (add_or_supercede_exported_var): Disable unneccessary
  call to dosutil_fix_variable.

Changes for March 21, 1999:

* shell.c (run_startup_files): Apply change from March 18th to all
  code that attempts to execute '~/.bashrc'. Make all attempts to
  execute '~/.profile' try the DOS SFN alternative if needed.
  Make all attempts to execute '~/.bash_login' try the SFN alternatives
  if needed. Make all attempts to execute '~/.bash_profile' try the
  SFN alternatives if needed.

Changes for March 19, 1999:

* variables.c (initialize_shell_variables): Change history file defaults to
  '_bshhist' (non-Posix mode) and to '_shhist' (Posix mode).

Changes for March 18, 1999:

* Makefile.in: set 'Program' to bash.exe. Renamed the DOSUTIL_* variables to
  DOS_*.

From Robert van der Boon:

* shell.c (dos_orig_bashrc_file): New character string constant.
  (dos_bashrc_file): New character string constant.
  (run_startup_files): If running '.bashrc' fails, try '_bashrc'.
* Makefile.in: Replace occurances of '.build' with '_build'.
  Replace occurances of '.made' with '_made'. Add tminit.c to
  DOS_SOURCES.
* config-bot.h: Handle configure defining time_t as long.
* tminit.c (__libc_termios_fill_queue): Change system(NULL) to system("").
* support/mkversion.sh: Replace occurances of '.build' with '_build'.

Changes for March 14, 1999:

* execute_cmd.c, redir.c: Delete add_delay_remove, try_delay_remove.
  Replace references with dosutil_add_delay_remove, dosutil_try_delay_remove.
* dosutil.h (dosutil_add_delay_remove, dosutil_try_delay_remove): New.
* dosutil.c (dosutil_add_delay_remove): New. Copied from add_delay_remove.
  (dosutil_try_delay_remove): New. Copies from try_delay_remove.
* redir.c (do_redirect_internal): Add call to dosutil_try_delay_remove after
  the close() calls in case r_reading_until & r_deblank_reading_until.
* lib/readline/bind.c (_rl_read_file): Set file_size equal to the
  return value of read().

Changes for March 10, 1999:

* lib/readline/readline.c
    (bind_arrow_keys): Bind Ctrl-LeftArrow to rl_forward_word.
    Bind Ctrl-RightArrow to rl_backward_word.
    Bind the Delete key to rl_delete. Bind the Home key to rl_beg_of_line.
    Bind the End key to rl_end_of_line.
* lib/readline/bind.c
    (_rl_read_init_file): When deciding whether or not to check for ~/_input,
    compare strcmp to zero instead of non-zero.

Changes for March 8, 1999:

* execute_cmd.c (expand_words_for_internal_command): Revert change from
  February 12, 1999.
* variables.c (make_var_array): Add call to dosutil_fix_variable so
  special environment variables holding paths are fixed up before
  being added to the environment being exported.
* general.c (canonicalize_pathname): Do not allow 'stub_char' to be added
  when the path is just a drivename.

Changes for March 4, 1999:

* lib/glob/glob.c (glob_vector): Do downcase extensionless files.

Changes for March 3, 1999:

* subst.c (seperate_out_assignments): Revert change from Bash 2.02.1.

Changes for February 28, 1999:

* dosutil.c (dosutil_add_executable_suffix): When a file has an extension and
  LFN=N, do not add a suffix.

Changes for February 22, 1999:

* dosutil.h (dosutil_encode_drivename): New prototype.
* dosutil.c (dosutil_encode_drivename): Renamed from encode_drivename.
* builtins/cd.def (change_to_directory): Adjust for new drive encoding.

Changes for February 19, 1999:

* Ported to Bash 2.03.

Changes for February 18, 1999:

* dosutil.h (dosutil_encoded_drive_len_diff): New extern. 
* dosutil.c
  (dosutil_encoded_drive_len_diff): Renamed from encoded_drive_len_diff.
  All references of encoded_drive_len_diff renamed to dosutil_encoded_drive_len_diff.
  (dosutil_getcwd): Adjust buffer size when PATH_SEPARATOR=: so there is
  enough space to contain the encoded drive name.

Changes for February 17, 1999:

* lib/readline/complete.c (filename_completion_function): Eliminate
  special hack for '//X/'.
  (_rl_completion_case_fold): Revert Feb. 3 change.

Changes for February 16, 1999:

* lib/glob/glob.c (glob_vector): Set glob_ignore_case based on the
  return value of _preserve_fncase();
  (glob_filename): Before calling fnmatch(), set __opendir_flags
  to __OPENDIR_PRESERVE_CASE. After the call, set __opendir_flags back to 0.
  This is to more closely match DJGPP's glob routines use of
  findfirst/findnext which always preserves case.

Changes for February 15, 1999:

* lib/readline/histfile.c (read_history_range): Use O_TEXT instead of
  O_BINARY to read the history file.
* test.c (unary_test): Fix '-x' so true is returned when an executable
  is found.

Changes for February 14, 1999:

* dosutil.h (dosutil_is_encoded_drivename): Declare.
  (dosutil_is_dev_path): Declare.
* dosutil.c (dosutil_is_encoded_drivename): New function.
  (encode_drivename_inplace): New function.
  (dosutil_is_dev_path): New function.
  (dosutil_add_sysroot): New function.
  (add_sysroot_internal): New internal function.
  (dev_str): New constant string.
  (dev_str_len): Integer constant containing length of dev_str.
  (dosutil_make_import_path): Use encode_drivename_inplace.
  (decode_drivename): New function.
  (dosutil_make_export_path): Use dosutil_is_encoded_drivename and
  decode_drivename.
  (dosutil_expand_path): Use decode_drivename.
  (dosutil_chdir): Don't bother translating new drivename encoding since
  libc can handle it.
* execute_cmd.c (expand_arguments_for_external_command): Use
  dosutil_expand_path instead of code that does the same thing.
* subst.c (expand_word_internal): Use dosutil_is_dev_path to reset
  need_expand_path.

Changes for February 13, 1999:

* shell.c: Revert shell.c change from Feb. 4.

Changes for February 12, 1999:

* input.c: Delete conditional code for handling mixed style EOLs.
* nojobs.c: Likewise.
* shell.c: Set glob_ignore_case to 1 when in a non-LFN environment.
* execute_cmd.c
  (shell_execve_dos): Replace instances of dosutil_getcwd with getcwd.
  Replace instances of dosutil_chdir with chdir.
  (expand_arguments_for_external_command): Always expand a path when needed.
  (expand_words_for_internal_command): Likewise.

Changes for February 11, 1999:

* shell.c: Set _crt0_startup_flags to strip .exe from argv[0].
* dosutil.c (dosutil_expand_path): No longer allocate a new string when
  expanding encoded drive names.

Changes for February 10, 1999:

* builtins/cd.def: Changed __MSDOS__XXX to __MSDOS__.

Changes for February 9, 1999:

* findcmd.c (search_for_command): free 'fixp' just before returning instead
  of always freeing.

Changes for February 7, 1999:

* findcmd.c (is_directory): Remove conditional code.
  (executable_file): Likewise.
  (search_for_command): No longer try to add executable_suffix while checking
  hashed command.

* execute_cmd.c (expand_words_for_external_command): Replace code for
  handling W_PATHEXPAND with call to dosutil_expand_path.

* dosutil.c (DOSUTIL_VERSION): Incremented to 0.3.

Changes for February 4, 1999:

* shell.c (main): Set flag __OPENDIR_PRESERVE_CASE in __opendir_flags
  for LFN environments.
* dosutil.c (dosutil_has_executable_suffix): New function.
* dosutil.h (dosutil_has_executable_suffix): Declare it.
* findcmd.c (file_status): Use it.
* findcmd.c (executable_filename): Don't add executable suffix.
* general.h (save_filename_string): Define macro.
* hashcmd.c (find_hashed_filename): Use macro. Call dosutil_executable suffix
  before calling executable_filename.
* execute_cmd.c (execute_simple_command): Don't call bind_lastarg when
  use_subshell is true.

Changes for February 3, 1999:

* execute_cmd.c (execute_simple_command): Instead of calling make_child(), set a flag to use execute_subshell_builtin_or_function for builtins and functions so that the current state is preserved.
* findcmd.c (search_for_command): Free fixp just before possible return when
  checking an absolute command.
* lib/readline/complete.c (_rl_completion_case_fold): Default to 1.

Changes for February 2, 1999:

* execute_cmd.c (execute_simple_command): Set result to dosutil_wait_status
  after execute_disk_command is called.

Changes for February 1, 1999:

* build.sh: Add quotes to make arguments.

Changes for January 26, 1999:

* make_cmd.c (make_redirection): Revert previous change.
* input.c
  (fd_to_buffered_stream): If a stream is seekable, set its mode to binary.
  (buffered_getchar): Ignore carriage returns.

Changes for January 24, 1999:

* make_cmd.c (make_redirection): For output redirections, use O_BINARY
  instead of O_TEXT.
* dosutil.c (dosutil_executable_suffix): Searches all executable suffixes
  in the function. Adjust to take one parameter.
* findcmd.c
  (executable_file): Adjust code that calls dosutil_executable_suffix.
  (search_for_command): Likewise.
  (find_absolute_program): Likewise.
  (find_in_path_element): Likewise.
* test.c (test_stat): Likewise.
* findcmd.c (special_dirs): New character array.  
  (prog_in_special_dir): New function. 
  (special_dir_exists): New function.
  (search_for_command): Use new functions.
  (find_user_command_in_path): Likewise.
* (all files): Changed all references of the macro USE_DOS to __MSDOS__.

