X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=main.ml;h=7f91dbf967fa9f18cbacd8efd42a627eabea6100;hb=0a4a3a68d48188e50ae321557f4527a8dffaf73a;hp=0abccdbf6d9264c1d07856eb383e4c1d3c08bc20;hpb=acbdd1601fcfb161089d326e7e32b74b76f441e3;p=vsys.git diff --git a/main.ml b/main.ml index 0abccdb..7f91dbf 100644 --- a/main.ml +++ b/main.ml @@ -15,6 +15,7 @@ let cmdspeclist = [ ("-daemon",Arg.Set(daemonize), "Daemonize"); ("-conffile",Arg.Set_string(Globals.conffile), "Config file"); + ("-logfile",Arg.Set_string(Globals.log_filepath), "Log 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; @@ -24,17 +25,21 @@ let cmdspeclist = ("-failsafe",Arg.Set(Globals.failsafe), "Never crash. Be stupid, but never crash. Use at your own risk."); ] +let sighup_handle s = + print "Received sighup. Running GC major pass"; + Gc.major () + let _ = - printf "Starting Vsys v%s\n" Globals.vsys_version;flush stdout; - fprintf logfd "Starting Vsys v%s\n" Globals.vsys_version;flush logfd; Arg.parse cmdspeclist (fun x->()) "Usage: vsys "; + Globals.logfd:=open_out_gen [Open_append;Open_creat] 0o644 !log_filepath; if (!Globals.backend == "") then printf "Try vsys --help\n" else begin + logprint "Starting Vsys v%s\n" Globals.vsys_version; if (!daemonize) then begin - printf "Daemonizing\n";flush Pervasives.stdout; + print "Daemonizing\n"; let child = Unix.fork () in if (child <> 0) then begin @@ -54,10 +59,11 @@ let _ = input_file_list:=List.concat [!input_file_list;frontends] end; + Sys.set_signal Sys.sigusr1 (Sys.Signal_handle sighup_handle); + let felst = List.map (fun lst->let (x,y)=lst in - fprintf logfd "Slice %s (%s)\n" x y; - flush logfd; + logprint "Slice %s (%s)\n" x y; new frontendHandler lst) !input_file_list in let _ = new backendHandler !Globals.backend felst in