From d91176ba49b58edaa896c60059182842cf0a3804 Mon Sep 17 00:00:00 2001 From: anders_k Date: Sun, 15 Jun 2014 19:12:12 +0000 Subject: [PATCH] Refactored verbosity handling with new setter&getter git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6494 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/build.cpp | 44 ++++++++++++++++++++++++++++++++++++-------- Source/build.h | 10 ++++++---- Source/makenssi.cpp | 6 +----- Source/script.cpp | 25 ++----------------------- 4 files changed, 45 insertions(+), 40 deletions(-) diff --git a/Source/build.cpp b/Source/build.cpp index b5995f57..6ad1f103 100644 --- a/Source/build.cpp +++ b/Source/build.cpp @@ -109,15 +109,11 @@ CEXEBuild::CEXEBuild() : m_exehead(0), m_exehead_size(0) { - linecnt = 0; - curlinereader = 0; - curfilename = 0; - - display_errors=1; - display_warnings=1; - display_info=1; - display_script=0; + set_verbosity(3); + curlinereader=0; + curfilename=0; + linecnt=0; cur_ifblock=NULL; last_line_had_slash=0; inside_comment=false; @@ -3346,6 +3342,38 @@ bool IsStringASCII(const TCHAR* s) } */ +int CEXEBuild::get_verbosity() const +{ + int v = 0; + if (display_errors) + { + v++; + if (display_warnings) + { + v++; + if (display_info) + { + v++; + if (display_script) + { + v++; + } + } + } + } + return v; +} + +void CEXEBuild::set_verbosity(int lvl) +{ + display_errors = lvl > 0; + display_warnings = lvl > 1; + display_info = lvl > 2; + display_script = lvl > 3; + extern int g_display_errors; + g_display_errors = display_errors; +} + void CEXEBuild::warning(const TCHAR *s, ...) { ExpandoString buf; diff --git a/Source/build.h b/Source/build.h index 32ea887d..4ebcf511 100644 --- a/Source/build.h +++ b/Source/build.h @@ -146,10 +146,12 @@ class CEXEBuild { // C++ macro definitions such as _UNICODE. void define(const TCHAR *p, const TCHAR *v=_T("")); // to add a defined thing. - int display_errors; - int display_script; - int display_warnings; - int display_info; + int get_verbosity() const; + void set_verbosity(int lvl); + bool display_errors; + bool display_script; + bool display_warnings; + bool display_info; int linecnt; const TCHAR *curfilename; diff --git a/Source/makenssi.cpp b/Source/makenssi.cpp index 46abe55f..62fa7a11 100644 --- a/Source/makenssi.cpp +++ b/Source/makenssi.cpp @@ -468,11 +468,7 @@ static inline int makensismain(int argc, TCHAR **argv) argv[argpos][2] >= _T('0') && argv[argpos][2] <= _T('4') && !argv[argpos][3]) { int v=argv[argpos][2]-_T('0'); - build.display_script=v>3; - build.display_info=v>2; - build.display_warnings=v>1; - build.display_errors=v>0; - g_display_errors=build.display_errors; + build.set_verbosity(v); } else if (S7IsChEqualI('p',argv[argpos][1]) && argv[argpos][2] >= _T('0') && argv[argpos][2] <= _T('5') && !argv[argpos][3]) diff --git a/Source/script.cpp b/Source/script.cpp index ece08328..e98eee62 100644 --- a/Source/script.cpp +++ b/Source/script.cpp @@ -3447,7 +3447,6 @@ int CEXEBuild::doCommand(int which_token, LineParser &line) case TOK_P_VERBOSE: { - extern int g_display_errors; for(int argi=1; argi3; - display_info=v>2; - display_warnings=v>1; - display_errors=v>0; - g_display_errors=display_errors; + set_verbosity(v); } } return PS_OK;