add -fPIC option to the C compiler, required in f31
[vsys.git] / dirwatcher.ml
index 667eba7..53c4c1c 100644 (file)
@@ -9,7 +9,6 @@ open Globals
  * leaks - fix implementation of rmdir accordingly
  *)
 let wdmap = Hashtbl.create 1024
-let masks = Hashtbl.create 1024
 
 let fd = Inotify.init ()
 
@@ -18,35 +17,23 @@ let rec list_check lst elt =
     | [] -> false
     | car::cdr -> if (car==elt) then true else list_check cdr elt
 
+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
-    fprintf logfd "File: %s. " fname;List.iter 
-                                       (fun e -> 
-                                          fprintf logfd "Event: %s\n" (string_of_event e)) 
-                                       evlist;
-    flush logfd
+    logprint "File: %s. " fname;
+    pevlist evlist
 
 let add_watch dir events handler =
-  let evcheck = list_check events in
   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 
-    Hashtbl.replace masks fqp true
-  with _ ->
-    ()
-
-let unmask_watch fqp =
-  if (Hashtbl.mem masks fqp) then
-    begin
-      Hashtbl.remove masks fqp
-    end
-  else
-    fprintf logfd "WARNING: %s -- Unpaired unmask\n" fqp;flush logfd
-  
 let asciiz s =
   let rec findfirstnul str idx len =
     if ((idx==len) || 
@@ -68,15 +55,15 @@ let receive_event (eventdescriptor:fname_and_fd) (bla:fname_and_fd) =
                                let (dirname,handler) = 
                                  try Hashtbl.find wdmap wd with Not_found->("",None)
                                in
-                                   match handler with
-                                     | None->fprintf logfd "Unhandled watch descriptor\n";flush logfd
-                                     | Some(handler)->
-                                         let fqp = String.concat "/" [dirname;purestr] in
-                                         let mask_filter = Hashtbl.mem masks fqp in
-                                           if (not mask_filter) then
-                                             begin
-                                                handler wd dirname evlist purestr
-                                             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