Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[ANN] win32-changenotify 0.3.0

4 views
Skip to first unread message

Daniel Berger

unread,
Jan 25, 2005, 6:19:06 PM1/25/05
to
Hi all,

The Win32Utils Team is proud to annouce win32-changenotify 0.3.0

What is it?
===========
An interface for monitoring file and/or directory changes on the Win32
platform.

Synopsis
========
require "win32/changenotify"
include Win32

# Wait for any writes to files in the C:\ drive.
filter = ChangeNotify::LAST_WRITE
cn = ChangeNotify.new("C:\\",true,filter)
cn.wait{ |s|
puts "Something changed"
puts "File: " + s.file_name
puts "Action: " + s.action
}

What's new?
===========
The interface has been altered so that ChangeNotify#wait will yield a
structure (if a block is given) that provides more detailed information
as to what, exactly, the changes were.

See the documentation for more details.

Where is it?
============
You can find it on the RAA or on the RubyForge project page at
http://www.rubyforge.org/projects/win32utils.

Also, I have release a standalone .so file that you can download from
the RubyForge project page if you don't happen to have a compiler. Be
sure to put it under a "win32" toplevel directory somewhere in your
library path.

Many thanks go to Park Heesob (again) for helping me with some sticky C
issues.

Future Plans
============
We are planning on an interface for Change Journals which will either
supplant or replace this package. Keep an eye out. :)
Enjoy!

The Win32Utils Team

CT

unread,
Feb 4, 2005, 4:06:06 PM2/4/05
to
Thanks for the great work with win32!


On Wed, 26 Jan 2005 08:20:51 +0900, Daniel Berger <djbe...@hotmail.com> wrote:

> require "win32/changenotify"
> include Win32
>
> # Wait for any writes to files in the C:\ drive.
> filter = ChangeNotify::LAST_WRITE
> cn = ChangeNotify.new("C:\\",true,filter)
> cn.wait{ |s|
> puts "Something changed"
> puts "File: " + s.file_name
> puts "Action: " + s.action
> }
>

I tried to run this script, after installing everything. The script
terminates, I make changes to files in C:\\, and nothing happens. What
am I doing wrong? Is there any other doc/sample for
win32-changenotify?

Thanks in advance!
CT


CT

unread,
Feb 4, 2005, 4:49:09 PM2/4/05
to
> > require "win32/changenotify"
> > include Win32
> >
> > # Wait for any writes to files in the C:\ drive.
> > filter = ChangeNotify::LAST_WRITE
> > cn = ChangeNotify.new("C:\\",true,filter)
> > cn.wait{ |s|
> > puts "Something changed"
> > puts "File: " + s.file_name
> > puts "Action: " + s.action
> > }
> >

Okay, I got this working, kinda, after mucking around a bit. What I
want is a daemon-like thingie which will give me notifications when
stuff inside a partocular directory changes. Is it advisable to wrap
the cn.wait call inside an infinite loop, for this? Are there any
consequences for that?
I did something like this:

while true


cn.wait{ |s|
puts "Something changed"
puts "File: " + s.file_name
puts "Action: " + s.action
}

end

This does detect file changes, but I donot understand how I get away
without calling cn.reset. Is that invoked when the block is called?

Thanks!
CT


Daniel Berger

unread,
Feb 4, 2005, 5:23:56 PM2/4/05
to

Hi CT,

Whoops, this did show up on Google Groups after all. Ugh - still
getting used to the new interface.

Anyway, you inadvertantly discovered a bug, which I have fixed and
uploaded to RubyForge. Please download win32-changenotify 0.3.1 and
try again. You should *not* have to wrap the cn.wait call in a "while
true" block. It should wait indefinitely if no timeout is specified.

Thanks much!

Regards,

PS - Park is working on win32-changejournal as we speak, which will
probably supplant the win32-changenotify package.

0 new messages