core: command-line: char* buffers fixups

This commit is contained in:
Peter D. Barnes, Jr
2022-10-25 00:12:29 -07:00
committed by Gabriel Ferreira
parent 8a0eba7c03
commit 0157675e40
5 changed files with 9 additions and 12 deletions

View File

@@ -84,9 +84,8 @@ main(int argc, char* argv[])
const std::string attrPath = attrClass + "::" + attrName;
// char* buffer option
const int bufsize = 10;
char* charbuf = new char[bufsize];
std::strncpy(charbuf, "charstar", bufsize);
constexpr int CHARBUF_SIZE = 10;
char charbuf[CHARBUF_SIZE] = "charstar";
// Non-option arguments
int nonOpt1 = 1;
@@ -119,7 +118,7 @@ main(int argc, char* argv[])
cmd.AddValue("strArg", "a string argument", strArg);
cmd.AddValue("anti", attrPath);
cmd.AddValue("cbArg", "a string via callback", MakeCallback(SetCbArg));
cmd.AddValue("charbuf", "a char* buffer", charbuf, bufsize);
cmd.AddValue("charbuf", "a char* buffer", charbuf, CHARBUF_SIZE);
cmd.AddNonOption("nonOpt1", "first non-option", nonOpt1);
cmd.AddNonOption("nonOpt2", "second non-option", nonOpt2);
cmd.Parse(argc, argv);

View File

@@ -747,7 +747,7 @@ CommandLine::AddValue(const std::string& name,
std::size_t num)
{
NS_LOG_FUNCTION(this << name << help << value << num);
std::shared_ptr<CharStarItem> item{new CharStarItem()};
auto item = std::make_shared<CharStarItem>();
item->m_name = name;
item->m_help = help;
item->m_buffer = value;

View File

@@ -540,18 +540,16 @@ void
CommandLineCharStarTestCase::DoRun()
{
// char* buffer option
const int bufsize = 10;
char* charbuf = new char[bufsize];
std::strncpy(charbuf, "charstar", bufsize);
constexpr int CHARBUF_SIZE = 10;
char charbuf[CHARBUF_SIZE] = "charstar";
CommandLine cmd;
cmd.AddValue("charbuf", "a char* buffer", charbuf, bufsize);
cmd.AddValue("charbuf", "a char* buffer", charbuf, CHARBUF_SIZE);
Parse(cmd, 1, "--charbuf=deadbeef");
std::string value{charbuf};
NS_TEST_ASSERT_MSG_EQ(value, "deadbeef", "CommandLine did not correctly set a char* buffer");
delete[] charbuf;
}
/**

View File

@@ -7,7 +7,7 @@ boolArg: false true
strArg: "strArg default" "deadbeef"
anti: "false" "true"
cbArg: cbArg default beefstew
charbuf: "charstar" "charstar"
charbuf: "charstar" "stewmeat"
nonOpt1: 1 3
nonOpt2: 1 4

View File

@@ -75,7 +75,7 @@ CommandLineExampleTestCase::CommandLineExampleTestCase()
"command-line-example",
NS_TEST_SOURCEDIR,
"--intArg=2 --boolArg --strArg=deadbeef --anti=t "
"--cbArg=beefstew 3 4 extraOne extraTwo")
"--cbArg=beefstew --charbuf=stewmeat 3 4 extraOne extraTwo")
{
}