# HG changeset patch # User Alessio Caiazza # Date 1327255484 -3600 # Node ID d823f69aaf2df7b485f69042f85aa6662351ab0b # Parent 0000000000000000000000000000000000000000 A working example diff -r 0000000000000000000000000000000000000000 -r d823f69aaf2df7b485f69042f85aa6662351ab0b .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Sun Jan 22 19:04:44 2012 +0100 @@ -0,0 +1,2 @@ +syntax:regexp +^src/dtm$ diff -r 0000000000000000000000000000000000000000 -r d823f69aaf2df7b485f69042f85aa6662351ab0b Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Sun Jan 22 19:04:44 2012 +0100 @@ -0,0 +1,4 @@ +all clean dtm: + cd src && $(MAKE) $@ + +.PHONY: all clean \ No newline at end of file diff -r 0000000000000000000000000000000000000000 -r d823f69aaf2df7b485f69042f85aa6662351ab0b src/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Makefile Sun Jan 22 19:04:44 2012 +0100 @@ -0,0 +1,9 @@ +all: dtm + +dtm: dtm.vala + valac --pkg gio-2.0 dtm.vala + +clean: + -rm dtm + +.PHONY: all clean diff -r 0000000000000000000000000000000000000000 -r d823f69aaf2df7b485f69042f85aa6662351ab0b src/dtm.vala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/dtm.vala Sun Jan 22 19:04:44 2012 +0100 @@ -0,0 +1,44 @@ + +int main (string[] args) { + + if (args.length != 3) { + stderr.printf("wrong parameters\n"); + stderr.printf("Usage:\n%s file_to_watch command_to_execute\n", args[0]); + return -1; + } + + var file = File.new_for_commandline_arg (args[1]); + + //if( file.query_exists()) + try { + var monitor = file.monitor_file(FileMonitorFlags.NONE); + if(monitor == null) + { + stderr.printf("Failed opening monitor for %s", file.get_path()); + return -2; + } + MainLoop main_loop = new MainLoop (); + + monitor.changed.connect( + (file, other_file, event_type) => { + stdout.printf("EVENTO: %s on %s\n", event_type.to_string(), file.get_path()); + if(event_type == FileMonitorEvent.CHANGED) + { + try { + Process.spawn_command_line_async(args[2]); + } catch (SpawnError e) { + stderr.printf("Cannot execute %s.\n\t%s", + args[3], e.message); + } + } + //main_loop.quit (); + }); + + main_loop.run (); + } catch (GLib.IOError e) { + stderr.printf("IO Error: %s", e.message); + return -3; + } + + return 0; +} \ No newline at end of file