diff options
| author | Daniel <kingdread@gmx.de> | 2018-09-14 01:37:22 +0200 | 
|---|---|---|
| committer | Daniel <kingdread@gmx.de> | 2018-09-14 01:37:22 +0200 | 
| commit | d5839835ffe1722d11885eeda51fc409ba737e62 (patch) | |
| tree | 7264c73283dd08df9578be11413ef5ff5f17dbc1 /src | |
| parent | 7e6c5c5811c174f89948a7996491e09f931762a5 (diff) | |
| download | raidgrep-d5839835ffe1722d11885eeda51fc409ba737e62.tar.gz raidgrep-d5839835ffe1722d11885eeda51fc409ba737e62.tar.bz2 raidgrep-d5839835ffe1722d11885eeda51fc409ba737e62.zip | |
add flag to enable debug output
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 38 | 
1 files changed, 36 insertions, 2 deletions
| diff --git a/src/main.rs b/src/main.rs index 9d98cc9..2f608df 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,6 +39,26 @@ macro_rules! unwrap {      };  } +macro_rules! debug { +    ($($arg:tt)*) => { +        if debug_enabled() { +            use std::io::Write; +            let stderr = ::std::io::stderr(); +            let mut lock = stderr.lock(); +            write!(lock, "[d] "); +            writeln!(lock, $($arg)*); +        } +    } +} + +static mut DEBUG_ENABLED: bool = false; + +/// Return whether or not debug output should be enabled. +#[inline] +fn debug_enabled() -> bool { +    unsafe { DEBUG_ENABLED } +} +  /// A program that allows you to search through all your evtc logs for specific  /// people.  #[derive(StructOpt, Debug)] @@ -65,6 +85,10 @@ pub struct Opt {      #[structopt(long = "no-color")]      no_color: bool, +    /// Print more debugging information to stderr. +    #[structopt(long = "debug")] +    debug: bool, +      /// The regular expression to search for.      #[structopt(name = "EXPR")]      expression: Regex, @@ -162,6 +186,11 @@ fn main() {          colored::control::set_override(false);      } +    if opt.debug { +        // We haven't started any threads here yet, so this is fine. +        unsafe { DEBUG_ENABLED = true }; +    } +      let result = grep(&opt);      match result {          Ok(_) => {} @@ -216,6 +245,7 @@ fn search_log(entry: &DirEntry, opt: &Opt) -> Result<Option<LogResult>, RuntimeE      let log = if let Some(e) = parsed {          e      } else { +        debug!("log file cannot be parsed: {:?}", entry.path());          return Ok(None);      }; @@ -233,9 +263,10 @@ fn search_log(entry: &DirEntry, opt: &Opt) -> Result<Option<LogResult>, RuntimeE  /// Extract human-readable information from the given log file.  fn extract_info(entry: &DirEntry, log: &Log) -> LogResult {      let bosses = log.boss_agents(); -    let boss_name = if bosses.len() == 1 { +    let boss_name = if bosses.len() >= 1 {          unwrap! { AgentName::Single(s) = bosses[0].name() => { s } }      } else { +        debug!("log file no boss agents: {:?}", entry.path());          "<unknown>"      }.into(); @@ -324,6 +355,9 @@ fn get_profession_name(profession: u32, elite: u32) -> &'static str {          (8, 60) => "Scourge",          (9, 63) => "Renegade", -        _ => "Unknown", +        _ => { +            debug!("Unknown spec (prof: {}, elite: {})", profession, elite); +            "Unknown" +        },      }  } | 
