Tagging module vsys - vsys-0.7-18
[vsys.git] / frontend.ml
index 335782a..ad36172 100644 (file)
@@ -24,7 +24,7 @@ object(this)
         let res = Directfifowatcher.mkentry fqp abspath realperm slice_name in
           match res with 
             | Success ->
-                Directfifowatcher.openentry fqp (abspath,slice_name)
+                Directfifowatcher.openentry root_dir fqp (abspath,slice_name)
             | _ -> ()
 
   (** A new directory was created at the backend, make a corresponding directory
@@ -46,11 +46,7 @@ object(this)
               end;
         with Unix.Unix_error(_,_,_) ->
           Unix.mkdir fqp perm;
-        Directfifowatcher.add_dir_watch fqp
-
-
-
-            
+          Directfifowatcher.add_dir_watch fqp
 
   (** Functions corresponding to file deletion/directory removal *)
 
@@ -65,7 +61,7 @@ object(this)
           Unix.unlink fqp_in;
           Unix.unlink fqp_out
         with _ ->
-          fprintf logfd "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ());flush logfd
+          logprint "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
 
   method rmdir rp =
     match rp with Relpath(rel) ->
@@ -74,8 +70,27 @@ object(this)
         try
           Unix.rmdir fqp
         with _ ->
-          fprintf logfd "Hm. %s disappeared or not empty. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ());flush logfd
+          logprint "Hm. %s disappeared or not empty. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
 
   initializer 
-    Directfifowatcher.add_dir_watch root_dir
+    (
+      try 
+        let s = Unix.stat root_dir in
+          if (s.st_kind<>S_DIR) then
+            begin
+              Unix.unlink root_dir;
+              Unix.mkdir root_dir 0o700
+            end
+          else if (s.st_perm <> 0o700) then
+            begin
+              Unix.rmdir root_dir;
+              Unix.mkdir root_dir 0o700
+            end;
+      with Unix.Unix_error(_,_,_) ->
+        begin
+          try 
+            Unix.mkdir root_dir 0o700;
+          with _ -> ();
+        end);
+          Directfifowatcher.add_dir_watch root_dir
 end