X-Git-Url: http://git.onelab.eu/?p=vsys.git;a=blobdiff_plain;f=frontend.ml;h=ad36172c0087d9116c5087a2de2972ef4230e60d;hp=335782a549d4dade281cbab12a72cf1c6a1447ed;hb=2b608078f42cc629a62b64149bc620a227c8831f;hpb=c9636f84acdab799ccfc5d50824138db70d0a5d3 diff --git a/frontend.ml b/frontend.ml index 335782a..ad36172 100644 --- a/frontend.ml +++ b/frontend.ml @@ -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