Skip to content

Commit

Permalink
2004-10-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
Browse files Browse the repository at this point in the history
	* DefaultWatcher.cs: don't use Directory.GetFileSystemEntries when the
	pattern has no wildcards. Fixes bug #67447.

svn path=/branches/mono-1-0/mcs/; revision=34766
  • Loading branch information
gonzalop committed Oct 7, 2004
1 parent 7fc7f6f commit f978d1c
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 4 deletions.
5 changes: 5 additions & 0 deletions mcs/class/System/System.IO/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2004-10-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>

* DefaultWatcher.cs: don't use Directory.GetFileSystemEntries when the
pattern has no wildcards. Fixes bug #67447.

2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>

* FAMWatcher.cs: s/fam/libfam.so.0/ so that g_module finds it even
Expand Down
21 changes: 17 additions & 4 deletions mcs/class/System/System.IO/DefaultWatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,10 @@ namespace System.IO {
class DefaultWatcherData {
public FileSystemWatcher FSW;
public string Directory;
public string FileMask;
public string FileMask; // If NoWildcards, contains the full path to the file.
public bool IncludeSubdirs;
public bool Enabled;
public bool NoWildcards;
public DateTime DisabledTime;
public Hashtable Files;
}
Expand Down Expand Up @@ -100,7 +101,12 @@ public void StartDispatching (FileSystemWatcher fsw)

data.FSW = fsw;
data.Directory = fsw.FullPath;
data.FileMask = fsw.MangledFilter;
data.NoWildcards = !fsw.Pattern.HasWildcard;
if (data.NoWildcards)
data.FileMask = Path.Combine (data.Directory, fsw.MangledFilter);
else
data.FileMask = fsw.MangledFilter;

data.IncludeSubdirs = fsw.IncludeSubdirectories;
data.Enabled = true;
data.DisabledTime = DateTime.MaxValue;
Expand Down Expand Up @@ -185,6 +191,7 @@ static void DispatchEvents (FileSystemWatcher fsw, FileAction action, string fil
}
}

static string [] NoStringsArray = new string [0];
void DoFiles (DefaultWatcherData data, string directory, bool dispatch)
{
bool direxists = Directory.Exists (directory);
Expand All @@ -194,10 +201,16 @@ void DoFiles (DefaultWatcherData data, string directory, bool dispatch)
}

string [] files = null;
if (direxists) {
if (!direxists) {
files = NoStringsArray;
} else if (!data.NoWildcards) {
files = Directory.GetFileSystemEntries (directory, data.FileMask);
} else {
files = new string [0];
// The pattern does not have wildcards
if (File.Exists (data.FileMask))
files = new string [] { data.FileMask };
else
files = NoStringsArray;
}

/* Set all as untested */
Expand Down

0 comments on commit f978d1c

Please sign in to comment.