in src/fc_parameter_list_argc_argv.c [18:79]
int FABRIC_CONFIGURATION_PARAMETER_LIST_to_ARGC_ARGV(const FABRIC_CONFIGURATION_PARAMETER_LIST* fabric_configuration_parameter_list , int* argc, char*** argv)
{
int result;
if (
(fabric_configuration_parameter_list == NULL) ||
(argc == NULL) ||
(argv == NULL)
)
{
LogError("invalid argument const FABRIC_CONFIGURATION_PARAMETER_LIST* fabric_configuration_parameter_list=%p, int* argc=%p, char*** argv=%p",
fabric_configuration_parameter_list, argc, argv);
result = MU_FAILURE;
}
else
{
if (fabric_configuration_parameter_list->Count == 0)
{
/*special case because malloc(0) miiight return "something" or "NULL"*/
*argc = 0;
*argv = NULL;
result = 0;
}
else
{
*argc = 0;
*argv = NULL;
bool was_error = false;
for (ULONG u = 0; !was_error && u < fabric_configuration_parameter_list->Count; u++)
{
int g_argc; /*g_ comes from "generated"*/
char** g_argv;
if (FABRIC_CONFIGURATION_PARAMETER_to_ARGC_ARGV(fabric_configuration_parameter_list->Items + u, &g_argc, &g_argv) != 0)
{
LogError("failure in FABRIC_CONFIGURATION_PARAMETER_to_ARGC_ARGV");
was_error = true;
}
else
{
if (ARGC_ARGV_concat(argc, argv, g_argc, g_argv) != 0)
{
LogError("failure in ARGC_ARGV_concat");
was_error = true;
}
ARGC_ARGV_free(g_argc, g_argv);
}
}
if (was_error)
{
/*TODO: cleanup*/
result = MU_FAILURE;
}
else
{
result = 0;
}
}
}
return result;
}