int FABRIC_ENDPOINT_RESOURCE_DESCRIPTION_LIST_to_ARGC_ARGV()

in src/fc_erdl_argc_argv.c [25:79]


int FABRIC_ENDPOINT_RESOURCE_DESCRIPTION_LIST_to_ARGC_ARGV(const FABRIC_ENDPOINT_RESOURCE_DESCRIPTION_LIST* fabric_endpoint_resource_description_list, int* argc, char*** argv)
{
    int result;
    if (
        (fabric_endpoint_resource_description_list == NULL) ||
        (argc == NULL) ||
        (argv == NULL)
        )
    {
        LogError("invalid argument const const FABRIC_ENDPOINT_RESOURCE_DESCRIPTION_LIST* fabric_endpoint_resource_description_list=%p, int* argc=%p, char*** argv=%p",
            fabric_endpoint_resource_description_list, argc, argv);
        result = MU_FAILURE;
    }
    else
    {
        *argc = 0;
        *argv = NULL;
        bool wasError = false;
        for (ULONG i = 0; !wasError && (i < fabric_endpoint_resource_description_list->Count); i++)
        {
            int p_argc;
            char** p_argv;
            if (FABRIC_ENDPOINT_RESOURCE_DESCRIPTION_to_ARGC_ARGV(fabric_endpoint_resource_description_list->Items + i, &p_argc, &p_argv) != 0)
            {
                LogError("failure in FABRIC_ENDPOINT_RESOURCE_DESCRIPTION_to_ARGC_ARGV");
                wasError = true;
            }
            else
            {
                if (ARGC_ARGV_concat(argc, argv, p_argc, p_argv) != 0)
                {
                    LogError("failure in ARGC_ARGV_concat");
                }
                else
                {
                    /*keep going...*/
                }

                ARGC_ARGV_free(p_argc, p_argv);
            }
        }

        if (wasError)
        {
            ARGC_ARGV_free(*argc, *argv);
            /*clean*/
            result = MU_FAILURE;
        }
        else
        {
            result = 0;
        }
    }
    return result;
}