+2004-05-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * DefaultWatcher.cs:
+ * FAMWatcher.cs: use MangledFilter instead of Filter.
+
+ * FileSystemWatcher.cs: added MangledFilter and finalizer.
+
+ * SearchPattern.cs: fixed the case when the pattern is "*".
+
2004-03-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
* FAMWatcher.cs: support monitoring subdirectories. FAM doesn't do that,
data.FSW = fsw;
data.Directory = fsw.FullPath;
- data.FileMask = fsw.Filter;
+ data.FileMask = fsw.MangledFilter;
data.IncludeSubdirs = fsw.IncludeSubdirectories;
data.Enabled = true;
data.DisabledTime = DateTime.MaxValue;
data = new FAMData ();
data.FSW = fsw;
data.Directory = fsw.FullPath;
- data.FileMask = fsw.Filter;
+ data.FileMask = fsw.MangledFilter;
data.IncludeSubdirs = fsw.IncludeSubdirectories;
if (data.IncludeSubdirs)
data.SubDirs = new Hashtable ();
FAMData fd = new FAMData ();
fd.FSW = data.FSW;
fd.Directory = directory;
- fd.FileMask = data.FSW.Filter;
+ fd.FileMask = data.FSW.MangledFilter;
fd.IncludeSubdirs = true;
fd.SubDirs = new Hashtable ();
fd.Enabled = true;
FAMData fd = new FAMData ();
fd.FSW = fsw;
fd.Directory = datadir;
- fd.FileMask = fsw.Filter;
+ fd.FileMask = fsw.MangledFilter;
fd.IncludeSubdirs = true;
fd.SubDirs = new Hashtable ();
fd.Enabled = true;
WaitForChangedResult lastData;
bool waiting;
SearchPattern2 pattern;
+ bool disposed;
+ string mangledFilter;
static IFileWatcher watcher;
#endregion // Fields
set { waiting = value; }
}
+ internal string MangledFilter {
+ get {
+ if (filter != "*.*")
+ return filter;
+
+ if (mangledFilter != null)
+ return mangledFilter;
+
+ string mangledFilter = "*.*";
+ if (!(watcher.GetType () == typeof (WindowsWatcher)))
+ mangledFilter = "*";
+
+ return mangledFilter;
+ }
+ }
+
internal SearchPattern2 Pattern {
get {
if (pattern == null) {
- string f = Filter;
- if (f == "*.*" && !(watcher.GetType () == typeof (WindowsWatcher)))
- f = "*";
-
- pattern = new SearchPattern2 (f);
+ pattern = new SearchPattern2 (MangledFilter);
}
return pattern;
}
if (filter != value) {
filter = value;
pattern = null;
+ mangledFilter = null;
}
}
}
protected override void Dispose (bool disposing)
{
- if (disposing) {
+ if (!disposed) {
+ disposed = true;
Stop ();
}
+
base.Dispose (disposing);
}
+ ~FileSystemWatcher ()
+ {
+ disposed = true;
+ Stop ();
+ }
+
[MonoTODO]
public void EndInit ()
{
if (pattern == "*") { // common case
ops = new Op (OpCode.True);
+ hasWildcard = true;
return;
}