#![warn(missing_docs)]
mod callbacks;
mod child;
mod config;
mod error;
mod ffi_util;
mod linux;
mod run;
mod seccomp;
mod status;
mod std_api;
mod wait;
use std::{ffi::CString, os::unix::io::RawFd};
use libseccomp::ScmpFilterContext;
pub use nix::sys::signal::Signal;
use nix::{errno::Errno, libc::pid_t};
use crate::sandbox::RawIoctlMap;
pub use crate::unshare::{error::Error, status::ExitStatus};
#[expect(clippy::type_complexity)]
pub struct Command {
config: config::Config,
exe_file: Option<CString>,
exe_args: Option<Vec<CString>>,
before_unfreeze: Option<Box<dyn FnMut(u32) -> Result<(), Errno>>>,
pre_exec: Option<Box<dyn Fn() -> Result<(), Errno>>>,
pty_fd: Option<RawFd>,
ioctl_denylist: Option<RawIoctlMap>,
seccomp_filter: Option<ScmpFilterContext>,
seccomp_pipefd: ((RawFd, RawFd), (RawFd, RawFd)),
}
#[derive(Debug)]
pub struct Child {
pid: pid_t,
status: Option<ExitStatus>,
pub pid_fd: RawFd,
pub seccomp_fd: RawFd,
}