#![doc = include_str!("../README.md")]
use std::io::{self, BufRead};
use argp::FromArgs;
use gnuv2_demangle::{demangle, DemangleConfig};
#[derive(FromArgs)]
struct Args {
#[argp(positional)]
syms: Vec<String>,
}
fn main() {
let args: Args = argp::parse_args_or_exit(argp::DEFAULT);
let config = DemangleConfig::new();
if args.syms.is_empty() {
for line in io::stdin().lock().lines() {
let line = line.expect("Error reading from stdin");
if let Ok(demangled) = demangle(&line, &config) {
println!("{demangled}");
} else {
println!("{line}");
}
}
} else {
for mangled in args.syms {
if let Ok(demangled) = demangle(&mangled, &config) {
println!("{demangled}");
} else {
println!("{mangled}");
}
}
}
}