Files
RedBear-OS/local/recipes/system/redbear-ime/source/src/main.rs
T
vasilito 8b872979ef fix: udev-shim panic, sessiond duplicate, scheme Bad-fd handling
- udev-shim: replace .expect() with graceful errors (no more panic on Broken pipe)
- P4-initfs: remove duplicate sessiond (conflicted with config)
- accessibility/ime/keymapd: break instead of exit(1) on EBADF
- P6 driver patches rebased
- Docs: archive old reports, add implementation master plan
2026-05-04 14:04:03 +01:00

43 lines
1.2 KiB
Rust

mod scheme;
use std::io::Write;
use scheme::ImeScheme;
fn log_msg(level: &str, msg: &str) {
let _ = writeln!(std::io::stderr(), "[ime] {} {}", level, msg);
}
fn main() {
let mut scheme = ImeScheme::new();
let socket = redox_scheme::Socket::nonblock("ime")
.expect("ime: failed to register scheme:ime");
log_msg("INFO", "registered scheme:ime");
loop {
let request = match socket.next_request(redox_scheme::SignalBehavior::Restart) {
Ok(Some(r)) => r,
Ok(None) => {
log_msg("INFO", "scheme unmounted, exiting");
break;
}
Err(e) => {
log_msg("ERROR", &format!("failed to read request: {}", e));
break;
}
};
match request.handle_scheme_block_mut(&mut scheme) {
Ok(response) => {
if let Err(e) = socket.write_response(response, redox_scheme::SignalBehavior::Restart) {
log_msg("ERROR", &format!("failed to write response: {}", e));
}
}
Err(_request) => {
log_msg("ERROR", "unhandled scheme request");
}
}
}
}