--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace OpenTK.Platform.X11.Bindings
+{
+ // Fully implemented but not currently used by OpenTK
+ // See System.IO.FileSystemWatcher for a cross-platform alternative
+#if false
+ class INotify
+ {
+ const string lib = "";
+
+ /// <summary>
+ /// Create and initialize inotify instance
+ /// </summary>
+ /// <returns></returns>
+ [DllImport(lib, EntryPoint = "inotify_init", ExactSpelling = true)]
+ public static extern int Init();
+
+ /// <summary>
+ /// Create and initialize inotify instance with specified flags
+ /// </summary>
+ /// <param name="flags">See <see cref="INotifyInitFlags"/></param>
+ /// <returns>A <c>System.Int32</c> handle to a inotify instance</returns>
+ [DllImport(lib, EntryPoint = "inotify_init1", ExactSpelling = true)]
+ public static extern int Init(INotifyFlags flags);
+
+ /// <summary>
+ /// Add watch of object pathname to inotify instance fd. Notify about
+ /// events specified by mask
+ /// </summary>
+ [DllImport(lib, EntryPoint = "inotify_add_watch", ExactSpelling = true)]
+ public static extern int AddWatch(int fd, string pathname, INotifyFlags mask);
+
+ /// <summary>
+ /// Remove the watch specified by wd from the inotify instance fd
+ /// </summary>
+ [DllImport(lib, EntryPoint = "inotify_rm_watch", ExactSpelling = true)]
+ public static extern int RemoveWatch(int fd, int wd);
+ }
+
+ /// <summary>
+ /// Describes an INotify event
+ /// </summary>
+ struct INotifyEvent
+ {
+ /// <summary>
+ /// Watch descriptor for wd parameter of INotify methods
+ /// </summary>
+ public int WatchDescriptor;
+
+ /// <summary>
+ /// Watch mask for mask parameter of INotify methods
+ /// </summary>
+ public INotifyFlags WatchMask;
+
+ /// <summary>
+ /// Cookie to synchronize two events
+ /// </summary>
+ public uint Cookie;
+
+ /// <summary>
+ /// Length (including NULs) of name
+ /// </summary>
+ public uint Length;
+
+ /// <summary>
+ ///
+ /// </summary>
+ public IntPtr Name;
+ }
+
+ /// <summary>
+ /// Flags for the parameter of <see cref="INotify.Init(INotifyFlags)"/>
+ /// </summary>
+ [Flags]
+ enum INotifyInitFlags
+ {
+ CloExec = 02000000,
+ NonBlock = 04000
+ }
+
+ /// \internal
+ /// <summary>
+ /// Supported events suitable for MASK parameter of AddWatch.
+ /// </summary>
+ [Flags]
+ enum INotifyFlags
+ {
+ /// <summary>
+ /// File was accessed
+ /// </summary>
+ Access = 0x00000001,
+
+ /// <summary>
+ /// File was modified
+ /// </summary>
+ Modify = 0x00000002,
+
+ /// <summary>
+ /// Metadata changed
+ /// </summary>
+ Attrib = 0x00000004,
+
+ /// <summary>
+ /// Writable file was closed
+ /// </summary>
+ CloseWrite = 0x00000008,
+
+ /// <summary>
+ /// Unwritable file closed
+ /// </summary>
+ CloseNoWrite = 0x00000010,
+
+ /// <summary>
+ /// File closed
+ /// </summary>
+ Close = CloseWrite | CloseNoWrite,
+
+ /// <summary>
+ /// File was opened
+ /// </summary>
+ Open = 0x00000020,
+
+ /// <summary>
+ /// File was moved from X
+ /// </summary>
+ MovedFrom = 0x00000040,
+
+ /// <summary>
+ /// File was moved to Y
+ /// </summary>
+ MovedTo = 0x00000080,
+
+ /// <summary>
+ /// File was moved
+ /// </summary>
+ Move = MovedFrom | MovedTo,
+
+ /// <summary>
+ /// Subfile was created
+ /// </summary>
+ Create = 0x00000100,
+
+ /// <summary>
+ /// Subfile was deleted
+ /// </summary>
+ Delete = 0x00000200,
+
+ /// <summary>
+ /// Self was deleted
+ /// </summary>
+ DeleteSelf = 0x00000400,
+
+ /// <summary>
+ /// Self was moved
+ /// </summary>
+ MoveSelf = 0x00000800,
+
+ /// <summary>
+ /// Backing fs was unmounted
+ /// </summary>
+ Unmount = 0x00002000,
+
+ /// <summary>
+ /// Event queue overflowed
+ /// </summary>
+ QueueOverflow = 0x00004000,
+
+ /// <summary>
+ /// File was ignored
+ /// </summary>
+ Ignored = 0x00008000,
+
+ /// <summary>
+ /// Only watch the path if it is a directory
+ /// </summary>
+ OnlyDirectory = 0x01000000,
+
+ /// <summary>
+ /// Do not follow symlinks
+ /// </summary>
+ DontFollow = 0x02000000,
+
+ /// <summary>
+ /// Add to the mask of an already existing watch
+ /// </summary>
+ MaskAdd = 0x20000000,
+
+ /// <summary>
+ /// Event occurred against dir
+ /// </summary>
+ IsDirectory = 0x40000000,
+
+ /// <summary>
+ /// Only send event once
+ /// </summary>
+ Oneshot = 0x80000000,
+
+ /// <summary>
+ /// All events which a program can wait on
+ /// </summary>
+ AllEvents =
+ Access | Modify | Attrib | Close | Open | Move |
+ Create | Delete | DeleteSelf | MoveSelf
+ }
+#endif
+}