[bcl] Base type update to match netstandard apis
[mono.git] / mcs / class / System / System.IO / FileSystemWatcher.cs
index 125f07805f9403f212fe5789357ff92bd0d02f33..43d3c2f362e1f681a13c46a53265585006de6e6a 100644 (file)
@@ -183,7 +183,10 @@ namespace System.IO {
                internal SearchPattern2 Pattern {
                        get {
                                if (pattern == null) {
-                                       pattern = new SearchPattern2 (MangledFilter);
+                                       if (watcher.GetType () == typeof (KeventWatcher))
+                                               pattern = new SearchPattern2 (MangledFilter, true); //assume we want to ignore case (OS X)
+                                       else
+                                               pattern = new SearchPattern2 (MangledFilter);
                                }
                                return pattern;
                        }
@@ -378,16 +381,18 @@ namespace System.IO {
                                return;
 
                        if (synchronizingObject == null) {
-                               switch (evtype) {
-                               case EventType.RenameEvent:
-                                       ((RenamedEventHandler)ev).BeginInvoke (this, (RenamedEventArgs) arg, null, null);
-                                       break;
-                               case EventType.ErrorEvent:
-                                       ((ErrorEventHandler)ev).BeginInvoke (this, (ErrorEventArgs) arg, null, null);
-                                       break;
-                               case EventType.FileSystemEvent:
-                                       ((FileSystemEventHandler)ev).BeginInvoke (this, (FileSystemEventArgs) arg, null, null);
-                                       break;
+                               foreach (var target in ev.GetInvocationList()) {
+                                       switch (evtype) {
+                                       case EventType.RenameEvent:
+                                               ((RenamedEventHandler)target).BeginInvoke (this, (RenamedEventArgs)arg, null, null);
+                                               break;
+                                       case EventType.ErrorEvent:
+                                               ((ErrorEventHandler)target).BeginInvoke (this, (ErrorEventArgs)arg, null, null);
+                                               break;
+                                       case EventType.FileSystemEvent:
+                                               ((FileSystemEventHandler)target).BeginInvoke (this, (FileSystemEventArgs)arg, null, null);
+                                               break;
+                                       }
                                }
                                return;
                        }
@@ -447,6 +452,11 @@ namespace System.IO {
                        return result;
                }
 
+               internal void DispatchErrorEvents (ErrorEventArgs args)
+               {
+                       OnError (args);
+               }
+
                internal void DispatchEvents (FileAction act, string filename, ref RenamedEventArgs renamed)
                {
                        if (waiting) {