- let evs = Inotify.read fd in
- List.iter (fun x->
- match x with
- | (wd,evlist,_,Some(str)) ->
- let purestr = asciiz(str) in
- let (dirname,handler) =
- try Hashtbl.find wdmap wd with Not_found->printf "Unknown watch descriptor\n";raise Not_found
- in
- (
- match handler with
- | None->handle_dir_event dirname evlist purestr
- | Some(handler)->handler dirname evlist purestr
- )
- | _ -> ())
- evs
+ let evs = Inotify.read fd in
+ List.iter (fun x->
+ match x with
+ | (wd,evlist,_,Some(str)) ->
+ begin
+ let purestr = asciiz(str) in
+ let (dirname,handler) =
+ try Hashtbl.find wdmap wd with Not_found->("",None)
+ in
+ match handler with
+ | None->logprint "Unhandled watch descriptor\n"
+ | Some(handler)->
+ let fqp = String.concat "/" [dirname;purestr] in
+ logprint "Received event from %s\n" fqp;
+ let mask_filter = Hashtbl.mem masks fqp in
+ begin
+ if ((not mask_filter)) then
+ begin
+ (*
+ logprint "Received event for - %s\n"
+ fqp;*)
+ handler wd dirname evlist
+ purestr
+ end
+ else
+ begin
+ (*logprint "Unmasking %s\n"
+ * fqp;*)
+ unmask_watch fqp
+ end
+ end
+ end
+ | _ -> ())
+ evs