| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
mod cli; |
| 7 |
|
| 8 |
#[cfg(feature = "alloc-stats")] |
| 9 |
#[global_allocator] |
| 10 |
static ALLOC: oxy_core::alloc_stats::Counting = oxy_core::alloc_stats::Counting; |
| 11 |
|
| 12 |
|
| 13 |
|
| 14 |
#[cfg(not(feature = "alloc-stats"))] |
| 15 |
#[global_allocator] |
| 16 |
static ALLOC: mimalloc::MiMalloc = mimalloc::MiMalloc; |
| 17 |
|
| 18 |
fn main() { |
| 19 |
|
| 20 |
|
| 21 |
#[cfg(unix)] |
| 22 |
unsafe { |
| 23 |
libc::signal(libc::SIGPIPE, libc::SIG_DFL); |
| 24 |
} |
| 25 |
|
| 26 |
|
| 27 |
|
| 28 |
|
| 29 |
|
| 30 |
#[cfg(all(target_os = "linux", target_env = "gnu", feature = "alloc-stats"))] |
| 31 |
if std::env::var_os("MALLOC_ARENA_MAX").is_none() { |
| 32 |
unsafe { |
| 33 |
libc::mallopt(libc::M_ARENA_MAX, 2); |
| 34 |
} |
| 35 |
} |
| 36 |
let command = oxy_core::timing::phase("command"); |
| 37 |
let result = cli::run(); |
| 38 |
drop(command); |
| 39 |
oxy_core::timing::memory_summary(); |
| 40 |
match result { |
| 41 |
Ok(code) => std::process::exit(code), |
| 42 |
Err(e) => { |
| 43 |
cli::ui::init(false); |
| 44 |
eprintln!("{} {e:#}", cli::ui::err("error:")); |
| 45 |
std::process::exit(1); |
| 46 |
} |
| 47 |
} |
| 48 |
} |