*** bash-3.0/bashline.c	Mon Jul  5 23:22:12 2004
--- bash/bashline.c	Thu Sep  2 16:00:12 2004
***************
*** 101,104 ****
--- 101,105 ----
  
  /* Helper functions for Readline. */
+ static int bash_directory_expansion __P((char **));
  static int bash_directory_completion_hook __P((char **));
  static int filename_completion_ignore __P((char **));
***************
*** 293,297 ****
        at = strchr (rl_completer_word_break_characters, '@');
        if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0))
!         return;
  
        /* We have something to do.  Do it. */
--- 294,298 ----
        at = strchr (rl_completer_word_break_characters, '@');
        if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0))
!         return old_value;
  
        /* We have something to do.  Do it. */
***************
*** 1407,1414 ****
  	  if (*hint_text == '~')
  	    {
! 	      int l, tl, vl;
  	      vl = strlen (val);
  	      tl = strlen (hint_text);
  	      l = vl - hint_len;	/* # of chars added */
  	      temp = (char *)xmalloc (l + 2 + tl);
  	      strcpy (temp, hint_text);
--- 1408,1424 ----
  	  if (*hint_text == '~')
  	    {
! 	      int l, tl, vl, dl;
! 	      char *rd;
  	      vl = strlen (val);
  	      tl = strlen (hint_text);
+ #if 0
  	      l = vl - hint_len;	/* # of chars added */
+ #else
+ 	      rd = savestring (filename_hint);
+ 	      bash_directory_expansion (&rd);
+ 	      dl = strlen (rd);
+ 	      l = vl - dl;		/* # of chars added */
+ 	      free (rd);
+ #endif
  	      temp = (char *)xmalloc (l + 2 + tl);
  	      strcpy (temp, hint_text);
***************
*** 2188,2191 ****
--- 2198,2222 ----
  }
  
+ /* Simulate the expansions that will be performed by
+    rl_filename_completion_function.  This must be called with the address of
+    a pointer to malloc'd memory. */
+ static int
+ bash_directory_expansion (dirname)
+      char **dirname;
+ {
+   char *d;
+ 
+   d = savestring (*dirname);
+ 
+   if (rl_directory_rewrite_hook)
+     (*rl_directory_rewrite_hook) (&d);
+ 
+   if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d))
+     {
+       free (*dirname);
+       *dirname = d;
+     }
+ }
+   
  /* Handle symbolic link references and other directory name
     expansions while hacking completion. */

*** bash-3.0/patchlevel.h	Wed Aug 22 08:05:39 2001
--- bash/patchlevel.h	Thu Sep  2 15:04:32 2004
***************
*** 26,30 ****
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 9
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 10
  
  #endif /* _PATCHLEVEL_H_ */
