#![deny(missing_docs)]
use proc_macro::TokenStream;
use quote::quote;
#[proc_macro_attribute]
pub fn main(args: TokenStream, stream: TokenStream) -> TokenStream {
let stream = proc_macro2::TokenStream::from(stream);
let signals = !args.to_string().contains("no_signals");
let new = quote!(
#[cfg(all(#signals, unix))]
uucore::init_startup_state_capture!();
pub fn uumain(args: impl uucore::Args) -> i32 {
#stream
#[cfg(unix)]
if !uucore::signals::sigpipe_was_ignored() {
let _ = uucore::signals::enable_pipe_errors();
}
#[cfg(all(#signals, unix))]
uucore::disable_rust_signal_handlers().expect("Disabling rust signal handlers failed");
let result = uumain(args);
match result {
Ok(()) => uucore::error::get_exit_code(),
Err(e) => {
let s = format!("{e}");
if s != "" {
uucore::show_error!("{s}");
}
if e.usage() {
use std::io::{stderr, Write as _};
let _ = writeln!(stderr(),"Try '{} --help' for more information.", uucore::execution_phrase());
}
e.code()
}
}
}
);
TokenStream::from(new)
}