Ejemplo n.º 1
0
        /////////////////////////////////////////////////////////////////////////////////

#if INOTIFY_TEST
        static void Main(string [] args)
        {
            Queue to_watch  = new Queue();
            bool  recursive = false;

            foreach (string arg in args)
            {
                if (arg == "-r" || arg == "--recursive")
                {
                    recursive = true;
                }
                else
                {
                    // Our hashes work without a trailing path delimiter
                    string path = arg.TrimEnd('/');
                    to_watch.Enqueue(path);
                }
            }

            while (to_watch.Count > 0)
            {
                string path = (string)to_watch.Dequeue();

                Console.WriteLine("Watching {0}", path);
                Inotify.Subscribe(path, null, Inotify.EventType.All);
            }

            Inotify.Start();
            Inotify.Verbose = true;

            while (Inotify.Enabled && Inotify.WatchCount > 0)
            {
                Thread.Sleep(1000);
            }

            if (Inotify.WatchCount == 0)
            {
                Console.WriteLine("Nothing being watched.");
            }

            // Kill the event-reading thread so that we exit
            Inotify.Stop();
        }
Ejemplo n.º 2
0
        private void Watch(string folder)
        {
            /* Do not monitor non existing directories */
            if (!Directory.Exists(folder))
            {
                return;
            }

            /* Do not monitor lost+found directories, since these
             * are not accesible to mortal users. */
            if (folder.EndsWith("lost+found"))
            {
                return;
            }

            /* Do not monitor trash folders */
            if (folder.EndsWith(".Trash"))
            {
                return;
            }

            /* Do not monitor per-user trash folders, eg. on removable
             * devices. These are * named ".Trash-username" */
            if (Path.GetFileName(folder).StartsWith(".Trash-"))
            {
                return;
            }

            Inotify.Subscribe(folder, new Inotify.InotifyCallback(OnInotifyEvent),
                              Inotify.EventType.CloseWrite | Inotify.EventType.Delete |
                              Inotify.EventType.Create | Inotify.EventType.MovedFrom |
                              Inotify.EventType.MovedTo);

            foreach (string dir in Directory.GetDirectories(folder))
            {
                Watch(dir);
            }
        }