X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=frontend.ml;h=1c46b2cdb751e6501f8caf6faba5c9a714db896a;hb=acbdd1601fcfb161089d326e7e32b74b76f441e3;hp=335782a549d4dade281cbab12a72cf1c6a1447ed;hpb=c9636f84acdab799ccfc5d50824138db70d0a5d3;p=vsys.git diff --git a/frontend.ml b/frontend.ml index 335782a..1c46b2c 100644 --- a/frontend.ml +++ b/frontend.ml @@ -24,7 +24,9 @@ object(this) let res = Directfifowatcher.mkentry fqp abspath realperm slice_name in match res with | Success -> - Directfifowatcher.openentry fqp (abspath,slice_name) + (* We don't want to get triggered when the .in descriptor is + * opened *) + Directfifowatcher.openentry rp root_dir fqp (abspath,slice_name); | _ -> () (** A new directory was created at the backend, make a corresponding directory @@ -46,11 +48,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 *) @@ -77,5 +75,24 @@ object(this) 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 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