normalize formatting and add rustfmt config

master
Lukáš Hozda 5 years ago
parent 15dad0578a
commit 569b9da581

@ -0,0 +1,16 @@
unstable_features = true
hard_tabs = true
inline_attribute_width = 30
use_small_heuristics = "Max"
max_width = 95
reorder_imports = false
reorder_modules = false
reorder_impl_items = true
report_todo = "Always"
report_fixme = "Always"
struct_field_align_threshold = 25
use_field_init_shorthand = true
use_try_shorthand = true
match_arm_blocks = false
overflow_delimited_expr = true
edition = "2018"

@ -2,8 +2,8 @@
pub static TIMEOUT: u32 = 30; pub static TIMEOUT: u32 = 30;
/// init script/command/program to be ran once initrs initializes /// init script/command/program to be ran once initrs initializes
pub static INIT_CMD: &'static [&'static str] = &["/bin/rc.init"]; pub static INIT_CMD: &'static [&'static str] = &["/bin/rc.init"];
/// command to reboot /// command to reboot
pub static REBOOT_CMD: &'static [&'static str] = &["/bin/rc.shutdown", "reboot"]; pub static REBOOT_CMD: &'static [&'static str] = &["/bin/rc.shutdown", "reboot"];
/// command to shutdown /// command to shutdown
pub static POWEROFF_CMD: &'static [&'static str] = &["/bin/rc.shutdown", "poweroff"]; pub static POWEROFF_CMD: &'static [&'static str] = &["/bin/rc.shutdown", "poweroff"];

@ -16,51 +16,49 @@ fn sig_poweroff() {
.output() .output()
.is_err() .is_err()
{ {
println!("[RS] poweroff failed"); println!("[RS] poweroff failed");
} }
} }
fn sig_reap() { fn sig_reap() {
loop { loop {
match waitpid(Pid::from_raw(-1), Some(WaitPidFlag::WNOHANG)) { match waitpid(Pid::from_raw(-1), Some(WaitPidFlag::WNOHANG)) {
Err(_) => break, Err(_) => break,
Ok(status) => match status { Ok(status) => match status {
WaitStatus::Exited(pid, ..) | WaitStatus::Exited(pid, ..)
WaitStatus::Signaled(pid, ..) | | WaitStatus::Signaled(pid, ..)
WaitStatus::Stopped(pid, ..) | | WaitStatus::Stopped(pid, ..)
WaitStatus::Continued(pid) => if pid.as_raw() <= 0 { | WaitStatus::Continued(pid) =>
break if pid.as_raw() <= 0 {
}, break;
_ => (), },
} _ => (),
} },
}
} }
alarm::set(config::TIMEOUT); alarm::set(config::TIMEOUT);
} }
fn sig_reboot() { fn sig_reboot() {
if Command::new(config::REBOOT_CMD[0]) if Command::new(config::REBOOT_CMD[0])
.args(config::REBOOT_CMD.iter().skip(1)) .args(config::REBOOT_CMD.iter().skip(1))
.output() .output()
.is_err() .is_err()
{ {
println!("[RS] reboot failed"); println!("[RS] reboot failed");
} }
} }
fn main() { fn main() {
if getpid().as_raw() != 1 { return } if getpid().as_raw() != 1 {
return;
}
let signals = Signals::new(&[ let signals = Signals::new(&[SIGUSR1, SIGCHLD, SIGALRM, SIGINT])
SIGUSR1, .expect("[RS] failed to handle signals");
SIGCHLD,
SIGALRM,
SIGINT,
]).expect("[RS] failed to handle signals");
set_current_dir("/") set_current_dir("/").expect("[RS] failed to chdir");
.expect("[RS] failed to chdir");
let init = Command::new(config::INIT_CMD[0]) let init = Command::new(config::INIT_CMD[0])
.args(config::INIT_CMD.iter().skip(1)) .args(config::INIT_CMD.iter().skip(1))
@ -69,22 +67,20 @@ fn main() {
.expect("[RS] failed to spawn init command"); .expect("[RS] failed to spawn init command");
thread::spawn(|| { thread::spawn(|| {
let c = init.wait_with_output() let c = init.wait_with_output().expect("[RS] failed to wait on init command");
.expect("[RS] failed to wait on init command");
if !c.status.success() { if !c.status.success() {
eprintln!("[RS] exited with a non-zero return code, see stderr below:"); eprintln!("[RS] exited with a non-zero return code, see stderr below:");
eprintln!("{}", String::from_utf8_lossy(&c.stdout)); eprintln!("{}", String::from_utf8_lossy(&c.stdout));
} }
}); });
for signal in signals.forever() { for signal in signals.forever() {
match signal { match signal {
SIGUSR1 => sig_poweroff(), SIGUSR1 => sig_poweroff(),
SIGCHLD | SIGCHLD | SIGALRM => sig_reap(),
SIGALRM => sig_reap(), SIGINT => sig_reboot(),
SIGINT => sig_reboot(), _ => unreachable!(),
_ => unreachable!(), }
}
} }
} }

Loading…
Cancel
Save