ocaml_inotify-0.4/inotify.cmxa:
$(MAKE) -C ocaml_inotify-0.4 && cp -f ocaml_inotify-0.4/inotify_stubs.o ./
-vsys: ocaml_inotify-0.4/inotify.cmxa globals.cmx fdwatcher.cmx dirwatcher.cmx fifowatcher.cmx frontend.cmx backend.cmx main.cmx docs
- ocamlopt -I ocaml_inotify-0.4 str.cmxa unix.cmxa inotify.cmxa globals.cmx fdwatcher.cmx dirwatcher.cmx fifowatcher.cmx frontend.cmx backend.cmx str.cmxa main.cmx -o vsys
+vsys: ocaml_inotify-0.4/inotify.cmxa globals.cmx fdwatcher.cmx conffile.cmx dirwatcher.cmx fifowatcher.cmx frontend.cmx backend.cmx main.cmx docs
+ ocamlopt -I ocaml_inotify-0.4 str.cmxa unix.cmxa inotify.cmxa globals.cmx fdwatcher.cmx dirwatcher.cmx fifowatcher.cmx frontend.cmx backend.cmx str.cmxa conffile.cmx main.cmx -o vsys
vsys.b: inotify.cma inotify.cmi globals.ml fdwatcher.ml dirwatcher.ml fifowatcher.ml frontend.ml backend.ml main.ml
ocamlc -g str.cma unix.cma inotify.cma globals.cmo fdwatcher.cmo dirwatcher.cmo fifowatcher.cmo frontend.cmo backend.cmo str.cma main.cmo -o vsys.b
--- /dev/null
+open Printf
+open Scanf
+
+let split_conf_line s =
+ sscanf s "%s %s" (fun s1 s2->(s1,s2))
+
+let read_frontends f =
+ let f_file = try open_in f with e -> printf "Could not open config
+ file\n";flush Pervasives.stdout;raise e
+ in
+ let rec read_conf_file cur_list =
+ let next_line = try Some(input_line f_file) with _ -> None in
+ match next_line with
+ | Some(inp_line) -> read_conf_file (split_conf_line(inp_line)::cur_list)
+ | None -> cur_list
+ in
+ read_conf_file []
open Backend
open Frontend
open Fifowatcher
+open Conffile
let input_file_list = ref []
let cur_dir = ref ""
let cmdspeclist =
[
+ ("-conffile",Arg.Set_string(Globals.conffile), "Config file");
("-backend",Arg.Set_string(Globals.backend), "Backend directory");
("-frontend",Arg.Tuple[Arg.String(fun s->cur_dir:=s);Arg.String(fun s->cur_slice:=s;input_file_list:=(!cur_dir,!cur_slice)::!input_file_list)], "frontendN,slicenameN");
("-nochroot",Arg.Set(Globals.nochroot), "Run in non-chroot environment")
let _ =
printf "Vsys v%s\n" Globals.vsys_version;flush stdout;
Arg.parse cmdspeclist (fun x->()) "Usage: vsys <list of mount points>";
- if (!Globals.backend == "" || !input_file_list == []) then
+ if (!Globals.backend == "") then
printf "Try vsys --help\n"
else
begin
Dirwatcher.initialize ();
Fifowatcher.initialize ();
- let felst = List.map (fun lst->new frontendHandler lst) !input_file_list in
+ if (!Globals.conffile != "") then
+ let frontends = Conffile.read_frontends !Globals.conffile in
+ input_file_list:=List.concat [!input_file_list;frontends];
+
+ let felst = List.map (fun lst->let (x,y)=lst in printf "Slice %s (%s)\n" x y;flush Pervasives.stdout;new frontendHandler lst) !input_file_list in
let _ = new backendHandler !Globals.backend felst in
Fdwatcher.start_watch ()
end