X-Git-Url: http://git.annexia.org/?p=whenjobs.git;a=blobdiff_plain;f=daemon%2Fwhenjobsd.ml;h=3028503adc4cc0e7e72fa2738812dbfb2b70f5da;hp=3f9fe89912e6d5734d353b319727cd2e13188de4;hb=ea28f8eebc4d8434e7e66d62b769d747656d27ae;hpb=ae04f3d8ec2b315f603dc266eab5a4ea73877931 diff --git a/daemon/whenjobsd.ml b/daemon/whenjobsd.ml index 3f9fe89..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 ()); @@ -120,11 +126,12 @@ Options: 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 ()