This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Bash diffs for better filename completion


Here are some short diffs for bash in beta17.1 that make life a little
nicer.  It modifies the globbing and filename completion code to work
better with Windows' case-preserving but case-insensitive filesystem. 
It also allows running *.com files in your path.

--Curtis Galloway

*** /src/cygnus/gnu-win32/gnu-win32-b17.1/bash/execute_cmd.c	Tue Dec 03
18:38:30 1996
--- execute_cmd.c	Thu Mar 20 08:41:45 1997
***************
*** 3373,3381 ****
    res = find_user_command_internal_1 (dotexe, flags);
    if (!res)
      {
!       free (dotexe);
!       res = find_user_command_internal_1 (name, flags);
      }
    return res;
  #else
    return find_user_command_internal_1 (name, flags);
--- 3373,3387 ----
    res = find_user_command_internal_1 (dotexe, flags);
    if (!res)
      {
!       /* Now try with a .com suffix */
!       strcpy(dotexe, name);
!       strcat (dotexe, ".com");
!       res = find_user_command_internal_1 (dotexe, flags);
!       if (!res) {
!         res = find_user_command_internal_1 (name, flags);
!       }
      }
+   free (dotexe);
    return res;
  #else
    return find_user_command_internal_1 (name, flags);
*** /src/cygnus/gnu-win32/gnu-win32-b17.1/bash/lib/glob/fnmatch.c	Tue
Dec 03 18:39:22 1996
--- lib/glob/fnmatch.c	Thu Mar 20 08:53:04 1997
***************
*** 175,182 ****
--- 175,187 ----
  	  break;
  
  	default:
+ #ifdef _WIN32
+ 	  if (tolower(c) != tolower(*n))
+ 	    return (FNM_NOMATCH);
+ #else
  	  if (c != *n)
  	    return (FNM_NOMATCH);
+ #endif
  	}
  
        ++n;
*** /src/cygnus/gnu-win32/gnu-win32-b17.1/bash/lib/readline/complete.c
Tue Dec 03 18:39:34 1996
--- lib/readline/complete.c	Tue Mar 25 08:35:43 1997
***************
*** 1077,1083 ****
  /* **************************************************************** */
  
  /* Non-zero means that case is not significant in completion. */
! int completion_case_fold = 0;
  
  /* Return an array of (char *) which is a list of completions for
TEXT.
     If there are no completions, return a NULL pointer.
--- 1077,1083 ----
  /* **************************************************************** */
  
  /* Non-zero means that case is not significant in completion. */
! int completion_case_fold = 1;
  
  /* Return an array of (char *) which is a list of completions for
TEXT.
     If there are no completions, return a NULL pointer.
***************
*** 1263,1274 ****
--- 1263,1283 ----
  	}
        else
  	{
+ #ifdef _WIN32
+ 	  /* Otherwise, if these match up to the length of filename, then
+ 	     it is a match. */
+ 	    if ((tolower(entry->d_name[0]) == tolower(filename[0])) &&
+ 		(((int)D_NAMLEN (entry)) >= filename_len) &&
+ 		(strncasecmp (filename, entry->d_name, filename_len) == 0))
+ 	      break;
+ #else
  	  /* Otherwise, if these match up to the length of filename, then
  	     it is a match. */
  	    if ((entry->d_name[0] == filename[0]) &&
  		(((int)D_NAMLEN (entry)) >= filename_len) &&
  		(strncmp (filename, entry->d_name, filename_len) == 0))
  	      break;
+ #endif
  	}
      }
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]