in src/fc_package.c [24:108]
FC_PACKAGE_HANDLE fc_package_create(int argc, char** argv, int* argc_consumed)
{
FC_PACKAGE_HANDLE result;
if (
(argc < 2) ||
(argv == NULL) ||
(argc_consumed == NULL)
)
{
LogError("invalid argument int argc=%d, char** argv=%p, int* argc_consumed=%p", argc, argv, argc_consumed);
result = NULL;
}
else
{
/*consumed greedy until cannot parse anymore*/
if (strcmp(argv[0], CONFIGURATION_PACKAGE_NAME) != 0)
{
LogVerbose("cannot parse because first argument is %s and it was expected to be " CONFIGURATION_PACKAGE_NAME "", argv[0]);
*argc_consumed = 0;
result = NULL;
}
else
{
result = malloc(sizeof(struct FC_PACKAGE_TAG));
if (result == NULL)
{
LogError("Failure in malloc");
/*return as is*/
}
else
{
result->fabric_configuration_package_description.Name = mbs_to_wcs(argv[1]);
if (result->fabric_configuration_package_description.Name == NULL)
{
LogError("failure in mbs_to_wcs(argv[1]=%s);", argv[1]);
}
else
{
*argc_consumed = 2;
result->fabric_configuration_package_description.Reserved = NULL;
result->fabric_configuration_package_description.ServiceManifestName = FC_NOT_IMPLEMENTED_STRING;
result->fabric_configuration_package_description.ServiceManifestVersion = FC_NOT_IMPLEMENTED_STRING;
result->fabric_configuration_package_description.Version = FC_NOT_IMPLEMENTED_STRING;
result->fabric_configuration_settings.Reserved = NULL;
result->fabric_configuration_settings.Sections = malloc(sizeof(FABRIC_CONFIGURATION_SECTION_LIST));
if (result->fabric_configuration_settings.Sections == NULL)
{
LogError("failure in malloc");
}
else
{
int c_argc;
ARGC_ARGV_DATA_RESULT r;
r = FABRIC_CONFIGURATION_SECTION_LIST_from_ARGC_ARGV(argc - *argc_consumed, argv + *argc_consumed, (FABRIC_CONFIGURATION_SECTION_LIST*)result->fabric_configuration_settings.Sections, &c_argc);
switch (r)
{
case ARGC_ARGV_DATA_OK:
{
*argc_consumed += c_argc;
goto allok;
break;
}
case ARGC_ARGV_DATA_INVALID:
case ARGC_ARGV_DATA_ERROR:
default:
{
LogError("error, FABRIC_CONFIGURATION_SECTION_LIST_from_ARGC_ARGV returned %" PRI_MU_ENUM "", MU_ENUM_VALUE(ARGC_ARGV_DATA_RESULT, r));
break;
}
}
free((void*)result->fabric_configuration_settings.Sections);
}
free((void*)result->fabric_configuration_package_description.Name);
}
free(result);
result = NULL;
}
}
}
allok:;
return result;
}