Author: gonzalo
Date: 2005-12-08 15:56:14 -0500 (Thu, 08 Dec 2005)
New Revision: 54125
Modified:
branches/mono-1-1-10/mcs/class/System/System.IO/ChangeLog
branches/mono-1-1-10/mcs/class/System/System.IO/FAMWatcher.cs
branches/mono-1-1-10/mcs/class/System/System.IO/FileSystemWatcher.cs
Log:
from head
Modified: branches/mono-1-1-10/mcs/class/System/System.IO/ChangeLog
===================================================================
--- branches/mono-1-1-10/mcs/class/System/System.IO/ChangeLog 2005-12-08
20:55:45 UTC (rev 54124)
+++ branches/mono-1-1-10/mcs/class/System/System.IO/ChangeLog 2005-12-08
20:56:14 UTC (rev 54125)
@@ -1,3 +1,10 @@
+2005-12-01 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
+
+ * FAMWatcher.cs:
+ * FileSystemWatcher.cs: use libgamin-1.so.0 instead of libfam.so.0 when
+ the runtime finds libgamin. On SUSE libgamin and libfam are not the same
+ libraries (on debian, they are just the same and there's no fam-server).
+
2005-06-25 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
* FAMWatcher.cs: reverting my patch. Seems that something got
Modified: branches/mono-1-1-10/mcs/class/System/System.IO/FAMWatcher.cs
===================================================================
--- branches/mono-1-1-10/mcs/class/System/System.IO/FAMWatcher.cs
2005-12-08 20:55:45 UTC (rev 54124)
+++ branches/mono-1-1-10/mcs/class/System/System.IO/FAMWatcher.cs
2005-12-08 20:56:14 UTC (rev 54125)
@@ -77,13 +77,14 @@
static FAMConnection conn;
static Thread thread;
static bool stop;
+ static bool use_gamin;
private FAMWatcher ()
{
}
// Locked by caller
- public static bool GetInstance (out IFileWatcher watcher)
+ public static bool GetInstance (out IFileWatcher watcher, bool
gamin)
{
if (failed == true) {
watcher = null;
@@ -95,6 +96,7 @@
return true;
}
+ use_gamin = gamin;
watches = Hashtable.Synchronized (new Hashtable ());
requests = Hashtable.Synchronized (new Hashtable ());
if (FAMOpen (out conn) == -1) {
@@ -335,25 +337,79 @@
FAMClose (ref conn);
}
- [DllImport ("libfam.so.0")]
- extern static int FAMOpen (out FAMConnection fc);
+ static int FAMOpen (out FAMConnection fc)
+ {
+ if (use_gamin)
+ return gamin_Open (out fc);
+ return fam_Open (out fc);
+ }
- [DllImport ("libfam.so.0")]
- extern static int FAMClose (ref FAMConnection fc);
+ static int FAMClose (ref FAMConnection fc)
+ {
+ if (use_gamin)
+ return gamin_Close (ref fc);
+ return fam_Close (ref fc);
+ }
- [DllImport ("libfam.so.0")]
- extern static int FAMMonitorDirectory (ref FAMConnection fc,
string filename,
+ static int FAMMonitorDirectory (ref FAMConnection fc, string
filename, out FAMRequest fr, IntPtr user_data)
+ {
+ if (use_gamin)
+ return gamin_MonitorDirectory (ref fc,
filename, out fr, user_data);
+ return fam_MonitorDirectory (ref fc, filename, out fr,
user_data);
+ }
+
+ static int FAMCancelMonitor (ref FAMConnection fc, ref
FAMRequest fr)
+ {
+ if (use_gamin)
+ return gamin_CancelMonitor (ref fc, ref fr);
+ return fam_CancelMonitor (ref fc, ref fr);
+ }
+
+ static int FAMPending (ref FAMConnection fc)
+ {
+ if (use_gamin)
+ return gamin_Pending (ref fc);
+ return fam_Pending (ref fc);
+ }
+
+
+
+ [DllImport ("libfam.so.0", EntryPoint="FAMOpen")]
+ extern static int fam_Open (out FAMConnection fc);
+
+ [DllImport ("libfam.so.0", EntryPoint="FAMClose")]
+ extern static int fam_Close (ref FAMConnection fc);
+
+ [DllImport ("libfam.so.0", EntryPoint="FAMMonitorDirectory")]
+ extern static int fam_MonitorDirectory (ref FAMConnection fc,
string filename,
out FAMRequest fr,
IntPtr user_data);
- [DllImport ("libfam.so.0")]
- extern static int FAMCancelMonitor (ref FAMConnection fc, ref
FAMRequest fr);
+ [DllImport ("libfam.so.0", EntryPoint="FAMCancelMonitor")]
+ extern static int fam_CancelMonitor (ref FAMConnection fc, ref
FAMRequest fr);
+ [DllImport ("libfam.so.0", EntryPoint="FAMPending")]
+ extern static int fam_Pending (ref FAMConnection fc);
+
+ [DllImport ("libgamin-1.so.0", EntryPoint="FAMOpen")]
+ extern static int gamin_Open (out FAMConnection fc);
+
+ [DllImport ("libgamin-1.so.0", EntryPoint="FAMClose")]
+ extern static int gamin_Close (ref FAMConnection fc);
+
+ [DllImport ("libgamin-1.so.0",
EntryPoint="FAMMonitorDirectory")]
+ extern static int gamin_MonitorDirectory (ref FAMConnection fc,
string filename,
+ out FAMRequest fr,
IntPtr user_data);
+
+ [DllImport ("libgamin-1.so.0", EntryPoint="FAMCancelMonitor")]
+ extern static int gamin_CancelMonitor (ref FAMConnection fc,
ref FAMRequest fr);
+
+ [DllImport ("libgamin-1.so.0", EntryPoint="FAMPending")]
+ extern static int gamin_Pending (ref FAMConnection fc);
+
[MethodImplAttribute(MethodImplOptions.InternalCall)]
extern static int InternalFAMNextEvent (ref FAMConnection fc,
out string filename,
out int code, out int
reqnum);
- [DllImport ("libfam.so.0")]
- extern static int FAMPending (ref FAMConnection fc);
}
}
Modified: branches/mono-1-1-10/mcs/class/System/System.IO/FileSystemWatcher.cs
===================================================================
--- branches/mono-1-1-10/mcs/class/System/System.IO/FileSystemWatcher.cs
2005-12-08 20:55:45 UTC (rev 54124)
+++ branches/mono-1-1-10/mcs/class/System/System.IO/FileSystemWatcher.cs
2005-12-08 20:56:14 UTC (rev 54125)
@@ -115,13 +115,21 @@
mode = InternalSupportsFSW ();
bool ok = false;
- if (mode == 3)
- ok = KeventWatcher.GetInstance (out
watcher);
- else if (mode == 2)
- ok = FAMWatcher.GetInstance (out
watcher);
- else if (mode == 1)
+ switch (mode) {
+ case 1: // windows
ok = DefaultWatcher.GetInstance (out
watcher);
//ok = WindowsWatcher.GetInstance (out
watcher);
+ break;
+ case 2: // libfam
+ ok = FAMWatcher.GetInstance (out
watcher, false);
+ break;
+ case 3: // kevent
+ ok = KeventWatcher.GetInstance (out
watcher);
+ break;
+ case 4: // libgamin
+ ok = FAMWatcher.GetInstance (out
watcher, true);
+ break;
+ }
if (mode == 0 || !ok)
DefaultWatcher.GetInstance (out
watcher);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches