2004-05-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
authorGonzalo Paniagua Javier <gonzalo.mono@gmail.com>
Sun, 9 May 2004 03:31:54 +0000 (03:31 -0000)
committerGonzalo Paniagua Javier <gonzalo.mono@gmail.com>
Sun, 9 May 2004 03:31:54 +0000 (03:31 -0000)
* DefaultWatcher.cs:
* FAMWatcher.cs: use MangledFilter instead of Filter.

* FileSystemWatcher.cs: added MangledFilter and finalizer.

* SearchPattern.cs: fixed the case when the pattern is "*".

svn path=/trunk/mcs/; revision=26978

mcs/class/System/System.IO/ChangeLog
mcs/class/System/System.IO/DefaultWatcher.cs
mcs/class/System/System.IO/FAMWatcher.cs
mcs/class/System/System.IO/FileSystemWatcher.cs
mcs/class/System/System.IO/SearchPattern.cs

index e217672cd54b4b5759905dba8b826ea391628a77..2b66c4fb42957b77f86ea400bf94c889f0fa23bb 100755 (executable)
@@ -1,3 +1,12 @@
+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,
index ddb55ea26b445ecc5634d6272b46868a053861a0..d99152bbb7c2f6b7634d392d76d020d97bed0b19 100644 (file)
@@ -79,7 +79,7 @@ namespace System.IO {
 
                                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;
index 2da293591390399aaca01d79448372953dc0e7fe..c31e17098c4930afb9f4fa335a6cfadda03a3186 100644 (file)
@@ -105,7 +105,7 @@ namespace System.IO {
                                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 ();
@@ -134,7 +134,7 @@ namespace System.IO {
                                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;
@@ -268,7 +268,7 @@ namespace System.IO {
                                                        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;
index 883c81b76d537e1a94236d52e06e35dd15c141ce..7a0ef5ee0976654c2c3d4a1e14305240cf6d235f 100644 (file)
@@ -33,6 +33,8 @@ namespace System.IO {
                WaitForChangedResult lastData;
                bool waiting;
                SearchPattern2 pattern;
+               bool disposed;
+               string mangledFilter;
                static IFileWatcher watcher;
 
                #endregion // Fields
@@ -112,14 +114,26 @@ namespace System.IO {
                        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;
                        }
@@ -168,6 +182,7 @@ namespace System.IO {
                                if (filter != value) {
                                        filter = value;
                                        pattern = null;
+                                       mangledFilter = null;
                                }
                        }
                }
@@ -283,12 +298,20 @@ namespace System.IO {
 
                protected override void Dispose (bool disposing)
                {
-                       if (disposing) {
+                       if (!disposed) {
+                               disposed = true;
                                Stop ();
                        }
+
                        base.Dispose (disposing);
                }
 
+               ~FileSystemWatcher ()
+               {
+                       disposed = true;
+                       Stop ();
+               }
+               
                [MonoTODO]
                public void EndInit ()
                {
index adbb8ce4508410f6fbf45c71b6deafe5670327d3..086011ef82646bb5a840bb062235f1fff37cf289 100644 (file)
@@ -51,6 +51,7 @@ namespace System.IO {
 
                        if (pattern == "*") {   // common case
                                ops = new Op (OpCode.True);
+                               hasWildcard = true;
                                return;
                        }