int FABRIC_CONFIGURATION_SECTION_LIST_to_ARGC_ARGV()

in src/fc_section_list_argc_argv.c [18:68]


int FABRIC_CONFIGURATION_SECTION_LIST_to_ARGC_ARGV(const FABRIC_CONFIGURATION_SECTION_LIST* fabric_configuration_section_list, int* argc, char*** argv)
{
    int result;
    if (
        (fabric_configuration_section_list == NULL) ||
        (argc == NULL) ||
        (argv == NULL)
        )
    {
        LogError("invalid argument const FABRIC_CONFIGURATION_SECTION_LIST* fabric_configuration_section_list=%p, int* argc=%p, char*** argv=%p",
            fabric_configuration_section_list, argc, argv);
        result = MU_FAILURE;
    }
    else
    {
        *argv = NULL;
        *argc = 0;

        bool wasError = false;

        for (ULONG i = 0; !wasError  && i <  fabric_configuration_section_list->Count; i++)
        {
            int g_argc;
            char** g_argv;
            if (FABRIC_CONFIGURATION_SECTION_to_ARGC_ARGV(fabric_configuration_section_list->Items + i, &g_argc, &g_argv) != 0)
            {
                LogError("failure in FABRIC_CONFIGURATION_SECTION_to_ARGC_ARGV");
            }
            else
            {
                if (ARGC_ARGV_concat(argc, argv, g_argc, g_argv) != 0)
                {
                    LogError("failure in ARGC_ARGV_concat");
                    wasError = true;
                }
                ARGC_ARGV_free(g_argc, g_argv);
            }
        }

        if (wasError)
        {
            result = MU_FAILURE;
        }
        else
        {
            result = 0;
        }
    }

    return result;
}