* leaks - fix implementation of rmdir accordingly
*)
let wdmap = Hashtbl.create 1024
-let masks = Hashtbl.create 1024
let fd = Inotify.init ()
| [] -> false
| car::cdr -> if (car==elt) then true else list_check cdr elt
-let handle_dir_event dirname evlist str =
- let fname = String.concat "/" [dirname;str] in
- logprint "File: %s. " fname;
+let pevlist evlist =
List.iter
(fun e ->
logprint "Event: %s\n" (string_of_event e))
evlist
+let handle_dir_event dirname evlist str =
+ let fname = String.concat "/" [dirname;str] in
+ logprint "File: %s. " fname;
+ pevlist evlist
+
let add_watch dir events handler =
let wd = Inotify.add_watch fd dir events in
Hashtbl.add wdmap wd (dir,Some(handler))
(* Ignore the possibility that the whole directory can disappear and come
* back while it is masked *)
-let mask_watch fqp =
- try
- print "Masking %s %d\n" fqp (String.length fqp);
- Hashtbl.replace masks fqp true
- with _ ->
- ()
-
-let unmask_watch fqp =
- if (Hashtbl.mem masks fqp) then
- begin
- Hashtbl.remove masks fqp
- end
- else
- logprint "WARNING: %s -- Unpaired unmask\n" fqp
-
let asciiz s =
let rec findfirstnul str idx len =
if ((idx==len) ||
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
- let mask_filter = Hashtbl.mem masks fqp in
- begin
- (*print "Received event for - %s\n"
- * fqp;*)
- if ((not mask_filter) && false) then
- handler wd dirname evlist purestr
- else
- print "%s is masked\n" fqp
- end
+ match handler with
+ | None->
+ logprint "Unhandled watch descriptor\n"
+ | Some(handler)->
+ let fqp = String.concat "/" [dirname;purestr] in
+ begin
+ handler wd dirname evlist
+ purestr
+ end
end
| _ -> ())
evs