From 83b7d119d94847338e2c46214c8162fcfa03ce7d Mon Sep 17 00:00:00 2001 From: Justin Dearing Date: Thu, 17 May 2007 03:57:49 +0000 Subject: [PATCH] Workrd around a bug that occured when searching for a *.{three letter extension} file where you would get *.ext*. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2520 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Services/FileUtility/FileUtility.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs b/src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs index 00f0738d55..53fe3c32af 100644 --- a/src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs +++ b/src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs @@ -265,12 +265,12 @@ namespace ICSharpCode.Core public static List SearchDirectory(string directory, string filemask, bool searchSubdirectories) { - return SearchDirectory(directory, filemask, searchSubdirectories, false); + return SearchDirectory(directory, filemask, searchSubdirectories, true); } public static List SearchDirectory(string directory, string filemask) { - return SearchDirectory(directory, filemask, true, false); + return SearchDirectory(directory, filemask, true, true); } /// @@ -283,11 +283,19 @@ namespace ICSharpCode.Core /// static void SearchDirectory(string directory, string filemask, List collection, bool searchSubdirectories, bool ignoreHidden) { + // If Directory.GetFiles() searches the 8.3 name as well as the full name so if the filemask is + // "*.xpt" it will return "Template.xpt~" + bool isExtMatch = Regex.IsMatch(filemask, @"^\*\..{3}$"); + string ext = null; string[] file = Directory.GetFiles(directory, filemask); + if (isExtMatch) ext = filemask.Remove(0,1); + foreach (string f in file) { if (ignoreHidden && (File.GetAttributes(f) & FileAttributes.Hidden) == FileAttributes.Hidden) { continue; } + if (isExtMatch && Path.GetExtension(f) != ext) continue; + collection.Add(f); }