ARGC_ARGV_DATA_RESULT FABRIC_CONFIGURATION_PARAMETER_from_ARGC_ARGV()

in src/fc_parameter_argc_argv.c [70:128]


ARGC_ARGV_DATA_RESULT FABRIC_CONFIGURATION_PARAMETER_from_ARGC_ARGV(int argc, char** argv, FABRIC_CONFIGURATION_PARAMETER* fabric_configuration_parameter, int* argc_consumed)
{
    ARGC_ARGV_DATA_RESULT result;
    if (
        (argc < 2) ||
        (argv == NULL) ||
        (argv[0] == NULL) ||
        (argv[1] == NULL) ||
        (fabric_configuration_parameter == NULL) ||
        (argc_consumed == NULL)
        )
    {
        LogError("invalid argument int argc=%d, char** argv=%p, FABRIC_CONFIGURATION_PARAMETER* fabric_configuration_parameter=%p, int* argc_consumed=%p",
            argc, argv, fabric_configuration_parameter, argc_consumed);
        result = ARGC_ARGV_DATA_INVALID;
    }
    else
    {
        for (uint32_t i = 0; i < sizeof(ARGC_ARGV_KEYWORDS_LIST) / sizeof(ARGC_ARGV_KEYWORDS_LIST[0]); i++)
        {
            if (strcmp(argv[0], ARGC_ARGV_KEYWORDS_LIST[i]) == 0)
            {
                LogVerbose("argv[0]=%s cannot be a parameter name because it is a reserved keyword", argv[0]);
                return  ARGC_ARGV_DATA_INVALID;
            }
        }
        
        fabric_configuration_parameter->IsEncrypted = false;
        fabric_configuration_parameter->MustOverride = false;
        fabric_configuration_parameter->Reserved = NULL;

        fabric_configuration_parameter->Name = mbs_to_wcs(argv[0]);
        if (fabric_configuration_parameter->Name == NULL)
        {
            LogError("failure in mbs_to_wcs(argv[0]=%s);", argv[0]);
            result = ARGC_ARGV_DATA_ERROR;
        }
        else
        {
            fabric_configuration_parameter->Value = mbs_to_wcs(argv[1]);

            if (fabric_configuration_parameter->Value == NULL)
            {
                LogError("failure in mbs_to_wcs(argv[1]=%s);", argv[1]);
                result = ARGC_ARGV_DATA_ERROR;
            }
            else
            {
                result = ARGC_ARGV_DATA_OK;
                *argc_consumed = 2;
                goto allok;
            }

            free((void*)fabric_configuration_parameter->Name);
        }
    }
allok:;
    return result;
}