From 3f519785d861c5159c8aa2970776cbfabb3c4e41 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Tue, 26 Aug 2014 23:25:08 -0400 Subject: [PATCH] Parser - Added static method to scan argv[] for overrides without a parse tree, so that any rc: arguments can be used to locate the rc file, load it, and proceed with command line parsing which relies on things like rc.dateformat. --- src/Parser.cpp | 20 ++++++++++++++++++++ src/Parser.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/src/Parser.cpp b/src/Parser.cpp index 6d5c48356..1a73bae97 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -62,6 +62,26 @@ Parser::~Parser () delete _tree; } +//////////////////////////////////////////////////////////////////////////////// +// Static method. +void Parser::getOverrides ( + int argc, + const char** argv, + std::string& rc_file) +{ + for (int i = 0; i < argc; ++i) + { + std::string raw = argv[i]; + if (raw.length () > 3 && + raw.substr (0, 3) == "rc:") + { + rc_file = raw.substr (3); + } + + // Keep looping, so we capture the last one. + } +} + //////////////////////////////////////////////////////////////////////////////// // char** argv --> std::vector _args void Parser::initialize (int argc, const char** argv) diff --git a/src/Parser.h b/src/Parser.h index 769c7051f..5180987ee 100644 --- a/src/Parser.h +++ b/src/Parser.h @@ -37,6 +37,9 @@ class Parser public: Parser (); ~Parser (); + + static void getOverrides (int, const char**, std::string&); + void initialize (int, const char**); void clear (); void appendStdin ();