ff_i_cmdline
Command line manipulation.
Refer to pages Custom Tokens, ff_i_color, and ff_i_token for additional details.
References
-
struct CLI_ARGUMENTS GetArguments(string sCommandLine)
- Parameters:
sCommandLine – Input commandline arguments, without arg0
- Returns:
A CLI_ARGUMENTS struct
Tokenize the string. Delimiter is space, quoted strings not allowed.
Source code
// @code
#include "ff_i_console"
#include "x3_inc_string"
//! @struct CLI_ARGUMENTS
//! @brief Struct containing command line arguments.
struct CLI_ARGUMENTS
{
int nCount; //!< Argument count
string sArg0; //!< Argument 0
string sArg1; //!< Argument 1
string sArg2; //!< Argument 2
string sArg3; //!< Argument 3
string sArg4; //!< Argument 4
};
// =============================================================================
//
//! @brief Tokenize the string. Delimiter is space, quoted strings not allowed.
//! @param sCommandLine Input commandline arguments, without arg0
//! @return A CLI_ARGUMENTS struct
struct CLI_ARGUMENTS GetArguments(string sCommandLine);
struct CLI_ARGUMENTS GetArguments(string sCommandLine)
{
struct CLI_ARGUMENTS retval;
string sDelimiter = " ";
sCommandLine = GetStringTrim(GetStringLowerCase(sCommandLine));
// If no token, return
if (sCommandLine == "")
return retval;
int nSubStr = FindSubString(sCommandLine, sDelimiter, 0);
if (nSubStr == -1)
{
retval.nCount = 0;
retval.sArg0 = GetStringTrim(sCommandLine);
return retval;
}
string sParsed = StringParse(sCommandLine, sDelimiter);
sCommandLine = StringRemoveParsed(sCommandLine, sParsed, sDelimiter);
retval.sArg0 = sParsed;
while (sCommandLine != "")
{
sParsed = StringParse(sCommandLine, sDelimiter);
sCommandLine = StringRemoveParsed(sCommandLine, sParsed, sDelimiter);
if (FALSE) {}
else if (retval.nCount == 0) { retval.nCount++; retval.sArg1 = sParsed; }
else if (retval.nCount == 1) { retval.nCount++; retval.sArg2 = sParsed; }
else if (retval.nCount == 2) { retval.nCount++; retval.sArg3 = sParsed; }
else if (retval.nCount == 3) { retval.nCount++; retval.sArg4 = sParsed; }
else if (retval.nCount > 3) { return retval; } // NOTE/TODO: Currently, nothing has more than 3 arguments
}
return retval;
}