Add --output-level/DBPRINTLEVEL to twprint's print-dbfile mode
This commit is contained in:
parent
de9ca5cbec
commit
4d3c188cac
|
@ -215,6 +215,15 @@ parameter; reports displayed by other modes and other commands
|
||||||
are not affected.
|
are not affected.
|
||||||
.br
|
.br
|
||||||
Initial value: \fI3\fP
|
Initial value: \fI3\fP
|
||||||
|
.IP \f(CWDBPRINTLEVEL\fP
|
||||||
|
Specifies the default level of report produced by the \fBtwprint
|
||||||
|
\(hy\(hyprint\(hydbfile\fP mode. Valid values for this option are 0 to
|
||||||
|
2. The output
|
||||||
|
level specified by this option can be overridden with the (\fB\(hyt\fP\ or\ \fB\(hy\(hyoutput\(hylevel\fP) option on the command line. If
|
||||||
|
this variable is not included in the configuration file, the default
|
||||||
|
output level is 2.
|
||||||
|
.br
|
||||||
|
Initial value: \fI2\fP
|
||||||
.IP \f(CWHASH_DIRECT_IO\fP
|
.IP \f(CWHASH_DIRECT_IO\fP
|
||||||
Use direct i/o when hashing files. (Linux-only as of OST 2.4.3.2)
|
Use direct i/o when hashing files. (Linux-only as of OST 2.4.3.2)
|
||||||
.br
|
.br
|
||||||
|
|
|
@ -83,7 +83,7 @@ Print the specified report file.
|
||||||
Use the specified local key file to perform verification
|
Use the specified local key file to perform verification
|
||||||
with reports which are signed.
|
with reports which are signed.
|
||||||
.TP
|
.TP
|
||||||
.BI \(hyt " level\fR, " --report-level " level
|
.BI \(hyt " level\fR, " --report-level " level"
|
||||||
Specifies the detail level of the printed report, overriding the
|
Specifies the detail level of the printed report, overriding the
|
||||||
\f(CWREPORTLEVEL\fP variable in the configuration
|
\f(CWREPORTLEVEL\fP variable in the configuration
|
||||||
file. \fIlevel\fR must be a number from 0\ to\ 4.
|
file. \fIlevel\fR must be a number from 0\ to\ 4.
|
||||||
|
@ -100,6 +100,7 @@ lbw(1.2i) lb.
|
||||||
-c \fIcfgfile\fP --cfgfile \fIcfgfile\fP
|
-c \fIcfgfile\fP --cfgfile \fIcfgfile\fP
|
||||||
-d \fIdatabase\fP --dbfile \fIdatabase\fP
|
-d \fIdatabase\fP --dbfile \fIdatabase\fP
|
||||||
-L \fIlocalkey\fP --local-keyfile \fIlocalkey\fP
|
-L \fIlocalkey\fP --local-keyfile \fIlocalkey\fP
|
||||||
|
-t \fR{ 0|1|2 }\fP --output-level \fR{ 0|1|2 }\fP
|
||||||
.TE
|
.TE
|
||||||
.RI "[ " "object1" " [ " "object2..." " ]]"
|
.RI "[ " "object1" " [ " "object2..." " ]]"
|
||||||
.RE
|
.RE
|
||||||
|
@ -125,6 +126,11 @@ Print the specified database file.
|
||||||
.BI \(hyL " localkey\fR, " --local-keyfile " localkey"
|
.BI \(hyL " localkey\fR, " --local-keyfile " localkey"
|
||||||
Use the specified local key file to read the database.
|
Use the specified local key file to read the database.
|
||||||
.TP
|
.TP
|
||||||
|
.BI \(hyt " level\fR, " --output-level " level"
|
||||||
|
Specifies the detail level of the printed database, overriding the
|
||||||
|
\f(CWDBPRINTLEVEL\fP variable in the configuration
|
||||||
|
file. \fIlevel\fR must be a number from 0\ to\ 2.
|
||||||
|
.TP
|
||||||
.RI "[ " "object1" " [ " "object2..." " ]]"
|
.RI "[ " "object1" " [ " "object2..." " ]]"
|
||||||
List of filesystem objects in the database to print. If no
|
List of filesystem objects in the database to print. If no
|
||||||
objects are specified, every object in the database will
|
objects are specified, every object in the database will
|
||||||
|
|
|
@ -134,7 +134,7 @@ static TSTRING util_Encode(const TSTRING& sIn)
|
||||||
// METHOD CODE
|
// METHOD CODE
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
|
|
||||||
void cTextDBViewer::PrintDB(cFCODatabaseFile& rd, const TSTRING& strFilename)
|
void cTextDBViewer::PrintDB(cFCODatabaseFile& rd, const TSTRING& strFilename, DbVerbosity verbosity)
|
||||||
{
|
{
|
||||||
TOSTREAM* pOut;
|
TOSTREAM* pOut;
|
||||||
TOFSTREAM fileOut;
|
TOFSTREAM fileOut;
|
||||||
|
@ -168,10 +168,18 @@ void cTextDBViewer::PrintDB(cFCODatabaseFile& rd, const TSTRING& strFilename)
|
||||||
//
|
//
|
||||||
OutputDatabaseHeader(rd.GetHeader(), pOut);
|
OutputDatabaseHeader(rd.GetHeader(), pOut);
|
||||||
|
|
||||||
|
|
||||||
|
if (verbosity > SUMMARY)
|
||||||
|
{
|
||||||
|
//TODO: OutputRulesSummary() would go here
|
||||||
|
|
||||||
OutputObjectSummary(rd, pOut, DETAILS_MARGIN);
|
OutputObjectSummary(rd, pOut, DETAILS_MARGIN);
|
||||||
|
|
||||||
|
if (verbosity == VERBOSE)
|
||||||
|
{
|
||||||
OutputObjectDetail(rd, pOut);
|
OutputObjectDetail(rd, pOut);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// we're done
|
// we're done
|
||||||
(*pOut) << g_sz79Dashes << endl;
|
(*pOut) << g_sz79Dashes << endl;
|
||||||
|
|
|
@ -50,7 +50,16 @@ class iFCONameTranslator;
|
||||||
class cTextDBViewer
|
class cTextDBViewer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void PrintDB(cFCODatabaseFile& rd, const TSTRING& strFilename); // throw
|
|
||||||
|
enum DbVerbosity
|
||||||
|
{
|
||||||
|
INVALID,
|
||||||
|
SUMMARY,
|
||||||
|
CONCISE,
|
||||||
|
VERBOSE
|
||||||
|
};
|
||||||
|
|
||||||
|
static void PrintDB(cFCODatabaseFile& rd, const TSTRING& strFilename, DbVerbosity=VERBOSE); // throw
|
||||||
|
|
||||||
static void OutputFCO(cDbDataSourceIter& dbIter,
|
static void OutputFCO(cDbDataSourceIter& dbIter,
|
||||||
const iFCOPropDisplayer* pPD,
|
const iFCOPropDisplayer* pPD,
|
||||||
|
@ -59,6 +68,7 @@ public:
|
||||||
bool fDetails = true);
|
bool fDetails = true);
|
||||||
// prints to the given ostream a text representation of the FCO pointed at by the iter. Silently
|
// prints to the given ostream a text representation of the FCO pointed at by the iter. Silently
|
||||||
// does nothing if(dbIter.Done()).
|
// does nothing if(dbIter.Done()).
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//
|
//
|
||||||
// private enums
|
// private enums
|
||||||
|
|
|
@ -296,30 +296,8 @@ static void FillOutCmdLineInfo(cTWPrintModeCommon* pModeInfo, const cCmdLinePars
|
||||||
// this bites! I have to make sure it is a narrow char string
|
// this bites! I have to make sure it is a narrow char string
|
||||||
ASSERT(iter.NumParams() > 0); // should be caught by cmd line parser
|
ASSERT(iter.NumParams() > 0); // should be caught by cmd line parser
|
||||||
pModeInfo->mPassPhrase = iter.ParamAt(0);
|
pModeInfo->mPassPhrase = iter.ParamAt(0);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case cTWPrintCmdLine::REPORTLEVEL:
|
|
||||||
{
|
|
||||||
if (iter.ParamAt(0) == _T("0"))
|
|
||||||
pModeInfo->mReportLevel = cTextReportViewer::SINGLE_LINE;
|
|
||||||
else if (iter.ParamAt(0) == _T("1"))
|
|
||||||
pModeInfo->mReportLevel = cTextReportViewer::PARSEABLE;
|
|
||||||
else if (iter.ParamAt(0) == _T("2"))
|
|
||||||
pModeInfo->mReportLevel = cTextReportViewer::SUMMARY_ONLY;
|
|
||||||
else if (iter.ParamAt(0) == _T("3"))
|
|
||||||
pModeInfo->mReportLevel = cTextReportViewer::CONCISE_REPORT;
|
|
||||||
else if (iter.ParamAt(0) == _T("4"))
|
|
||||||
pModeInfo->mReportLevel = cTextReportViewer::FULL_REPORT;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// They specified an illegal level, error.
|
|
||||||
TSTRING errStr = _T("Invalid Level: ");
|
|
||||||
errStr += iter.ParamAt(0);
|
|
||||||
throw eTWPrintInvalidReportLevel(errStr);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
//done with report-level stuff.
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -564,9 +542,10 @@ class cTWPrintDBMode_i : public cTWPrintModeCommon
|
||||||
public:
|
public:
|
||||||
TSTRING mDbFile;
|
TSTRING mDbFile;
|
||||||
std::vector<TSTRING> mFilesToCheck;
|
std::vector<TSTRING> mFilesToCheck;
|
||||||
|
cTextDBViewer::DbVerbosity mDbVerbosity;
|
||||||
|
|
||||||
// ctor can set up some default values
|
// ctor can set up some default values
|
||||||
cTWPrintDBMode_i() : cTWPrintModeCommon()
|
cTWPrintDBMode_i() : cTWPrintModeCommon(), mVerbosity(cTextDBViewer::VERBOSE)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -598,6 +577,26 @@ void cTWPrintDBMode::FillOutDBModeConfigInfo(cTWPrintDBMode_i* pModeInfo, const
|
||||||
if (cf.Lookup(TSTRING(_T("DBFILE")), str))
|
if (cf.Lookup(TSTRING(_T("DBFILE")), str))
|
||||||
pModeInfo->mDbFile = str;
|
pModeInfo->mDbFile = str;
|
||||||
|
|
||||||
|
if (cf.Lookup(TSTRING(_T("DBPRINTLEVEL")), str))
|
||||||
|
{
|
||||||
|
if (_tcsicmp(str.c_str(), _T("0")) == 0)
|
||||||
|
pModeInfo->mDbVerbosity = cTextDBViewer::SUMMARY;
|
||||||
|
else if (_tcsicmp(str.c_str(), _T("1")) == 0)
|
||||||
|
pModeInfo->mDbVerbosity = cTextDBViewer::CONCISE;
|
||||||
|
else if (_tcsicmp(str.c_str(), _T("2")) == 0)
|
||||||
|
pModeInfo->mDbVerbosity = cTextDBViewer::VERBOSE;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// They specified an illegal level, error.
|
||||||
|
TSTRING errStr = _T("Invalid Level: ");
|
||||||
|
errStr += str;
|
||||||
|
throw eTWPrintInvalidDbPrintLevelCfg(errStr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// Use the default level of reporting, they specified none in configuration file.
|
||||||
|
pModeInfo->mVerbosity = cTextDBViewer::VERBOSE;
|
||||||
|
|
||||||
//
|
//
|
||||||
// turn all of the file names into full paths (they're relative to the exe dir)
|
// turn all of the file names into full paths (they're relative to the exe dir)
|
||||||
//
|
//
|
||||||
|
@ -615,6 +614,10 @@ void cTWPrintDBMode::InitCmdLineParser(cCmdLineParser& parser)
|
||||||
|
|
||||||
parser.AddArg(cTWPrintCmdLine::DB_FILE, TSTRING(_T("d")), TSTRING(_T("dbfile")), cCmdLineParser::PARAM_ONE);
|
parser.AddArg(cTWPrintCmdLine::DB_FILE, TSTRING(_T("d")), TSTRING(_T("dbfile")), cCmdLineParser::PARAM_ONE);
|
||||||
|
|
||||||
|
// multiple levels of reporting
|
||||||
|
parser.AddArg(
|
||||||
|
cTWPrintCmdLine::REPORTLEVEL, TSTRING(_T("t")), TSTRING(_T("output-level")), cCmdLineParser::PARAM_ONE);
|
||||||
|
|
||||||
// For the variable object list.
|
// For the variable object list.
|
||||||
parser.AddArg(cTWPrintCmdLine::PARAMS, TSTRING(_T("")), TSTRING(_T("")), cCmdLineParser::PARAM_MANY);
|
parser.AddArg(cTWPrintCmdLine::PARAMS, TSTRING(_T("")), TSTRING(_T("")), cCmdLineParser::PARAM_MANY);
|
||||||
}
|
}
|
||||||
|
@ -642,10 +645,30 @@ bool cTWPrintDBMode::Init(const cConfigFile& cf, const cCmdLineParser& cmdLine)
|
||||||
{
|
{
|
||||||
switch (iter.ArgId())
|
switch (iter.ArgId())
|
||||||
{
|
{
|
||||||
|
|
||||||
case cTWPrintCmdLine::DB_FILE:
|
case cTWPrintCmdLine::DB_FILE:
|
||||||
|
{
|
||||||
ASSERT(iter.NumParams() > 0); // should be caught by cmd line parser
|
ASSERT(iter.NumParams() > 0); // should be caught by cmd line parser
|
||||||
mpData->mDbFile = iter.ParamAt(0);
|
mpData->mDbFile = iter.ParamAt(0);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
case cTWPrintCmdLine::REPORTLEVEL:
|
||||||
|
{
|
||||||
|
if (iter.ParamAt(0) == _T("0"))
|
||||||
|
mpData->mDbVerbosity = cTextDBViewer::SUMMARY;
|
||||||
|
else if (iter.ParamAt(0) == _T("1"))
|
||||||
|
mpData->mDbVerbosity = cTextDBViewer::CONCISE;
|
||||||
|
else if (iter.ParamAt(0) == _T("2"))
|
||||||
|
mpData->mDbVerbosity = cTextDBViewer::VERBOSE;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// They specified an illegal level, error.
|
||||||
|
TSTRING errStr = _T("Invalid Level: ");
|
||||||
|
errStr += iter.ParamAt(0);
|
||||||
|
throw eTWPrintInvalidDbPrintLevel(errStr);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case cTWPrintCmdLine::PARAMS:
|
case cTWPrintCmdLine::PARAMS:
|
||||||
{
|
{
|
||||||
// pack all of these onto the files to check list...
|
// pack all of these onto the files to check list...
|
||||||
|
@ -725,6 +748,7 @@ int cTWPrintDBMode::Execute(cErrorQueue* pQueue)
|
||||||
|
|
||||||
if (mpData->mFilesToCheck.size() > 0)
|
if (mpData->mFilesToCheck.size() > 0)
|
||||||
{
|
{
|
||||||
|
bool details = (mpData->mDbVerbosity == cTextDBViewer::VERBOSE);
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
// print specific FCOs from the database
|
// print specific FCOs from the database
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
|
@ -757,7 +781,7 @@ int cTWPrintDBMode::Execute(cErrorQueue* pQueue)
|
||||||
if ((!dsIter.Done()) && (dsIter.HasFCOData()))
|
if ((!dsIter.Done()) && (dsIter.HasFCOData()))
|
||||||
{
|
{
|
||||||
cTextDBViewer::OutputFCO(
|
cTextDBViewer::OutputFCO(
|
||||||
dsIter, dbIter.GetGenreHeader().GetPropDisplayer(), pNT, &TCOUT);
|
dsIter, dbIter.GetGenreHeader().GetPropDisplayer(), pNT, &TCOUT, details);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -787,7 +811,7 @@ int cTWPrintDBMode::Execute(cErrorQueue* pQueue)
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
// printing the entire db
|
// printing the entire db
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
cTextDBViewer::PrintDB(db, _T("-"));
|
cTextDBViewer::PrintDB(db, _T("-"), mpData->mDbVerbosity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (eError& e)
|
catch (eError& e)
|
||||||
|
|
|
@ -50,6 +50,8 @@ class iTWMode;
|
||||||
TSS_EXCEPTION(eTWPrintInvalidParamHelp, eError)
|
TSS_EXCEPTION(eTWPrintInvalidParamHelp, eError)
|
||||||
TSS_EXCEPTION(eTWPrintInvalidReportLevel, eError)
|
TSS_EXCEPTION(eTWPrintInvalidReportLevel, eError)
|
||||||
TSS_EXCEPTION(eTWPrintInvalidReportLevelCfg, eError)
|
TSS_EXCEPTION(eTWPrintInvalidReportLevelCfg, eError)
|
||||||
|
TSS_EXCEPTION(eTWPrintInvalidDbPrintLevel, eError)
|
||||||
|
TSS_EXCEPTION(eTWPrintInvalidDbPrintLevelCfg, eError)
|
||||||
|
|
||||||
// Help is requested for a non-existent mode.
|
// Help is requested for a non-existent mode.
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,10 @@ TSS_BEGIN_ERROR_REGISTRATION(twprint)
|
||||||
|
|
||||||
TSS_REGISTER_ERROR(eTWPrintInvalidParamHelp(), _T("Invalid mode parameter to help:"));
|
TSS_REGISTER_ERROR(eTWPrintInvalidParamHelp(), _T("Invalid mode parameter to help:"));
|
||||||
TSS_REGISTER_ERROR(eTWPrintInvalidReportLevel(), _T("Invalid reporting level specified, valid levels: [0-4]"));
|
TSS_REGISTER_ERROR(eTWPrintInvalidReportLevel(), _T("Invalid reporting level specified, valid levels: [0-4]"));
|
||||||
TSS_REGISTER_ERROR(eTWPrintInvalidReportLevelCfg(), _T("Invalid reporting level in configuration file, must be [0-4]"));
|
TSS_REGISTER_ERROR(eTWPrintInvalidReportLevelCfg(), \
|
||||||
|
_T("Invalid reporting level in configuration file, must be [0-4]"));
|
||||||
|
TSS_REGISTER_ERROR(eTWPrintInvalidDbPrintLevel(), _T("Invalid output level specified, valid levels: [0-2]"));
|
||||||
|
TSS_REGISTER_ERROR(eTWPrintInvalidDbPrintLevelCfg(), \
|
||||||
|
_T("Invalid output level in configuration file, valid levels: [0-2]"));
|
||||||
|
|
||||||
TSS_END_ERROR_REGISTRATION()
|
TSS_END_ERROR_REGISTRATION()
|
||||||
|
|
|
@ -66,6 +66,7 @@ TSS_BeginStringtable(cTWPrint)
|
||||||
_T(" -c cfgfile --cfgfile cfgfile\n")
|
_T(" -c cfgfile --cfgfile cfgfile\n")
|
||||||
_T(" -d database --dbfile database\n")
|
_T(" -d database --dbfile database\n")
|
||||||
_T(" -L localkey --local-keyfile localkey\n")
|
_T(" -L localkey --local-keyfile localkey\n")
|
||||||
|
_T(" -t { 0|1|2 } --output-level { 0|1|2 }\n")
|
||||||
_T("[object1 [object2 ...]]\n")
|
_T("[object1 [object2 ...]]\n")
|
||||||
_T("\n")
|
_T("\n")
|
||||||
_T("The -v and -s options are mutually exclusive.\n")
|
_T("The -v and -s options are mutually exclusive.\n")
|
||||||
|
|
Loading…
Reference in New Issue