blob: 2c9848b9b25f52909f67201367c112a63f46178f [file] [log] [blame]
/*
* Copyright (c) 2017, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "ArgumentsParser.h"
#include "HostInfo.h"
#include "Host.h"
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
// *************************************************************************************************
bool ArgumentsParser::ParseAndHandleArguments(int argc, char * argv[], unsigned int &commandsTcpPort)
{
//do something with params
(void)commandsTcpPort;
for (int i = 0; i < argc; i++)
{
m_arguments.push_back(string(argv[i]));
}
if (DoesArgumentExist("-v"))
{ //Argument for the version of host_manager_11ad.
// No need to run host manager
printf("Host Manager 11ad version: %s\n", HostInfo::GetVersion().c_str());
return false;
}
if (DoesArgumentExist("-p"))
{ //Argument for setting the port of the commands TCP port
}
if (DoesArgumentExist("-statusBar"))
{ //Argument for setting the textual status bar display
printf("Showing Status Bar Periodically");
g_LogConfig.SetStatusBarPrinter(true);
}
if (DoesArgumentExist("-menu"))
{ //Argument for showing host_manager menu
Host::GetHost().SetMenuDisplay(true);
}
unsigned val;
if (GetArgumentValue("-d", val))
{ //Argument for setting verbosity level
g_LogConfig.SetMaxSeverity(val);
}
return true;
}
bool ArgumentsParser::DoesArgumentExist(string option)
{
bool doesArgumentExist = find(m_arguments.begin(), m_arguments.end(), option) != m_arguments.end();
return doesArgumentExist;
}
bool ArgumentsParser::GetArgumentValue(string option, unsigned& val)
{
auto argumentIter = find(m_arguments.begin(), m_arguments.end(), option);
if (argumentIter != m_arguments.end())
{
auto valueIter = ++argumentIter;
if (valueIter != m_arguments.end())
{
string valStr = *valueIter;
try
{
val = strtoul(valStr.c_str(), NULL, 10);
return true;
}
catch (...)
{
printf("Error in setting verbosity level\n");
}
}
}
return false;
}