X-Git-Url: http://git.annexia.org/?p=whenjobs.git;a=blobdiff_plain;f=daemon%2Fwhenjobsd.ml;h=3028503adc4cc0e7e72fa2738812dbfb2b70f5da;hp=a994279b30ad29765c587e9fe74567ada67ae86d;hb=ea28f8eebc4d8434e7e66d62b769d747656d27ae;hpb=61cad7bbaf63389b520b695eefdd735bc11a8aa6 diff --git a/daemon/whenjobsd.ml b/daemon/whenjobsd.ml index a994279..3028503 100644 --- a/daemon/whenjobsd.ml +++ b/daemon/whenjobsd.ml @@ -19,6 +19,9 @@ open Unix open Printf +(* Ensures that Whentools module is linked to the daemon. *) +let _ = Whentools.set_variable + let () = (* Running the daemon as root is a mistake. It must be run as a * non-root user. @@ -101,10 +104,13 @@ Options: (* chdir / so we don't prevent filesystems from being unmounted. *) chdir "/"; - (* Close file descriptors. *) + (* Close file descriptors, replace with /dev/null. *) close stdin; close stdout; close stderr; + ignore (openfile "/dev/null" [O_RDONLY] 0); + ignore (openfile "/dev/null" [O_WRONLY] 0); + ignore (openfile "/dev/null" [O_WRONLY] 0); (* Create a new session. *) ignore (setsid ()); @@ -117,13 +123,15 @@ Options: ); (* Start syslog. *) - Syslog.notice "daemon started: uid=%d home=%s" euid home; + Syslog.notice "daemon started: version=%s uid=%d home=%s" + Config.package_version euid home; - (* If there is a jobs.cmo file, load it. *) + (* If there is a jobs.cmo/jobs.cmxs file, load it. *) let () = - let file = sprintf "%s/jobs.cmo" jobsdir in + let suffix = if not Dynlink.is_native then "cmo" else "cmxs" in + let file = sprintf "%s/jobs.%s" jobsdir suffix in if Sys.file_exists file then - try Daemon.reload_file () with Failure _ -> () in + try Daemon.reload_files () with Failure _ -> () in (* Go into main loop. *) Daemon.main_loop ()