mirror of
https://github.com/storytold/cadcraft.git
synced 2026-11-10 12:30:16 -06:00
* DWG reader and writer run in a child process (E7) An allocation failure or stack overflow in the third-party code ends its process, which catch_unwind can't stop, so one bad file took every open drawing with it. The app and CLI now run them in a copy of themselves over pipes. A worker that dies or runs past 30 minutes costs that one open or save. If no worker can be started, the work stays in the process, as before. * DWG worker: keep the reply's bytes instead of copying them; skip the test without a bridge
14 lines
676 B
Rust
14 lines
676 B
Rust
#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic, clippy::unimplemented, clippy::todo, clippy::unreachable)]
|
|
|
|
fn main() {
|
|
// A copy of this program started to read or write a DWG file does only that.
|
|
if let Some(code) = cadcraft_io::dwg_worker::serve_if_asked() {
|
|
std::process::exit(code);
|
|
}
|
|
cadcraft_io::dwg_worker::use_own_worker();
|
|
// `args_os`, not `args`: a non-Unicode argument (a Latin-1 file name on Linux) must be
|
|
// reported as an error, not panic before anything is printed.
|
|
let code = cadcraft_cli::run(std::env::args_os().skip(1), &mut std::io::stdout(), &mut std::io::stderr());
|
|
std::process::exit(code);
|
|
}
|