method handle_dir_event _ dirname evlist fname =
let fqp = String.concat "/" [dirname;fname] in
if ((Str.string_match file_regexp fname 0) && not (Str.string_match acl_file_regexp fname 0)) then
begin
let acl_fqp = String.concat "." [fqp;"acl"] in
let acl_filter = this#make_filter acl_fqp in
let slice_list =
match acl_filter with
| None -> []
| Some(filter) -> List.filter
(fun fe->Hashtbl.mem filter (fe#get_slice_name ()))
frontend_lst
in
let is_event = list_check evlist in
if (is_event Create) then
begin
if (is_event Isdir) then
begin
this#new_dir slice_list fqp this#handle_dir_event
end
else
begin
this#new_script slice_list fqp
end
end
else if (is_event Delete) then
begin
if (is_event Isdir) then
begin
List.iter (fun frontend->
frontend#rmdir (mk_rel_path fqp)) slice_list
end
else List.iter (fun frontend ->
frontend#unlink (mk_rel_path fqp)) slice_list
end
end
else
fprintf logfd "Rejected weird entry %s\n" fname