PoC daemon edition

This commit is contained in:
Qyriad 2026-03-20 20:43:12 +01:00
parent 16f2649334
commit ac53850fd1
2 changed files with 104 additions and 18 deletions

View file

@ -35,6 +35,8 @@ pub(crate) mod prelude {
pub use bstr::ByteSlice;
pub use itertools::Itertools;
pub use rustix::io::Errno;
pub use tap::{Pipe, Tap, TapFallible, TapOptional};
@ -133,17 +135,27 @@ pub fn do_append(args: Arc<Args>, append_args: AppendCmd) -> Result<(), BoxDynEr
}
//#[tracing::instrument(level = "debug")]
pub fn do_daemon(_args: Arc<Args>, daemon_args: DaemonCmd) -> Result<(), BoxDynError> {
pub fn do_daemon(args: Arc<Args>, daemon_args: DaemonCmd) -> Result<(), BoxDynError> {
let config_file = Path::new(&args.file);
let config_file: PathBuf = if config_file.is_relative() && !config_file.starts_with("./") {
iter::once(OsStr::new("./"))
.chain(config_file.iter())
.collect()
} else {
config_file.to_path_buf()
};
let config_file: Arc<Path> = Arc::from(config_file);
// FIXME: make configurable?
let _ = rustix::process::umask(Mode::from_bits_retain(0o600).complement());
let mut daemon = match daemon_args {
DaemonCmd { stdin: true, .. } => Daemon::from_stdin(),
DaemonCmd { socket: None, .. } => Daemon::open_default_socket()?,
DaemonCmd { stdin: true, .. } => Daemon::from_stdin(config_file),
DaemonCmd { socket: None, .. } => Daemon::open_default_socket(config_file)?,
DaemonCmd {
socket: Some(socket),
..
} => Daemon::from_unix_socket_path(&socket)?,
} => Daemon::from_unix_socket_path(config_file, &socket)?,
};
daemon.enter_loop().unwrap();