diff --git a/src/Options.cc b/src/Options.cc index b7382716dc..6ab5b5bb0c 100644 --- a/src/Options.cc +++ b/src/Options.cc @@ -448,7 +448,7 @@ Options parse_cmdline(int argc, char** argv) set_analysis_option(optarg, rval); break; case 'o': - rval.analysis_options.only_func = util::copy_string(optarg); + rval.analysis_options.only_func = optarg; break; case 'P': if ( rval.dns_mode != detail::DNS_DEFAULT ) diff --git a/src/script_opt/ScriptOpt.cc b/src/script_opt/ScriptOpt.cc index 87fc95ac75..12809d7ce9 100644 --- a/src/script_opt/ScriptOpt.cc +++ b/src/script_opt/ScriptOpt.cc @@ -28,7 +28,7 @@ void optimize_func(ScriptFunc* f, ProfileFunc* pf, ScopePtr scope_ptr, return; if ( analysis_options.only_func && - ! util::streq(f->Name(), analysis_options.only_func) ) + *analysis_options.only_func != f->Name() ) return; if ( analysis_options.only_func ) @@ -110,7 +110,11 @@ void analyze_scripts(Options& opts) check_env_opt("ZEEK_XFORM", analysis_options.activate); if ( ! analysis_options.only_func ) - analysis_options.only_func = getenv("ZEEK_ONLY"); + { + auto zo = getenv("ZEEK_ONLY"); + if ( zo ) + analysis_options.only_func = zo; + } if ( analysis_options.only_func ) analysis_options.activate = true; diff --git a/src/script_opt/ScriptOpt.h b/src/script_opt/ScriptOpt.h index 6e4ee4b03f..ca1a86892f 100644 --- a/src/script_opt/ScriptOpt.h +++ b/src/script_opt/ScriptOpt.h @@ -4,6 +4,9 @@ #pragma once +#include +#include + #include "zeek/Func.h" #include "zeek/Expr.h" #include "zeek/Scope.h" @@ -25,7 +28,7 @@ struct AnalyOpt { bool dump_xform = false; // If non-nil, then only analyze the given function/event/hook. - const char* only_func = nullptr; + std::optional only_func; // If true, do global inlining. bool inliner = false;