static IOTHUB_DEVICE_CONFIGURATION_RESULT clone_deviceConfiguration()

in iothub_service_client/src/iothub_deviceconfiguration.c [1144:1217]


static IOTHUB_DEVICE_CONFIGURATION_RESULT clone_deviceConfiguration(IOTHUB_DEVICE_CONFIGURATION* source, IOTHUB_DEVICE_CONFIGURATION* target)
{
    IOTHUB_DEVICE_CONFIGURATION_RESULT result = IOTHUB_DEVICE_CONFIGURATION_OK;

    if ((source != NULL) && (target != NULL))
    {
        target->version = source->version;
        target->priority = source->priority;
        target->content.deviceContent = NULL;
        target->content.modulesContent = NULL;

        if (source->configurationId != NULL && mallocAndStrcpy_s((char**)&(target->configurationId), source->configurationId) != 0)
        {
            LogError("mallocAndStrcpy_s failed for IOTHUB_DEVICE_CONFIGURATION configurationId");
            result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
        }
        else if (source->schemaVersion != NULL && mallocAndStrcpy_s((char**)&(target->schemaVersion), source->schemaVersion) != 0)
        {
            LogError("mallocAndStrcpy_s failed for IOTHUB_DEVICE_CONFIGURATION schemaVersion");
            result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
        }
        else if (source->targetCondition != NULL && mallocAndStrcpy_s((char**)&(target->targetCondition), source->targetCondition) != 0)
        {
            LogError("mallocAndStrcpy_s failed for IOTHUB_DEVICE_CONFIGURATION targetCondition");
            result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
        }
        else if (source->eTag != NULL && mallocAndStrcpy_s((char**)&(target->eTag), source->eTag) != 0)
        {
            LogError("mallocAndStrcpy_s failed for IOTHUB_DEVICE_CONFIGURATION eTag");
            result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
        }
        else if (source->createdTimeUtc != NULL && mallocAndStrcpy_s((char**)&(target->createdTimeUtc), source->createdTimeUtc) != 0)
        {
            LogError("mallocAndStrcpy_s failed for IOTHUB_DEVICE_CONFIGURATION createdTimeUtc");
            result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
        }
        else if (source->lastUpdatedTimeUtc != NULL && mallocAndStrcpy_s((char**)&(target->lastUpdatedTimeUtc), source->lastUpdatedTimeUtc) != 0)
        {
            LogError("mallocAndStrcpy_s failed for IOTHUB_DEVICE_CONFIGURATION lastUpdatedTimeUtc");
            result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
        }
        else if (source->content.deviceContent != NULL && mallocAndStrcpy_s((char**)&(target->content.deviceContent), source->content.deviceContent) != 0)
        {
            LogError("mallocAndStrcpy_s failed for IOTHUB_DEVICE_CONFIGURATION_CONTENT deviceContent");
            result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
        }
        else if (source->content.modulesContent != NULL && mallocAndStrcpy_s((char**)&(target->content.modulesContent), source->content.modulesContent) != 0)
        {
            LogError("mallocAndStrcpy_s failed for IOTHUB_DEVICE_CONFIGURATION_CONTENT modulesContent");
            result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
        }
        else
        {
            if (cloneNameValueArrays_results(&(source->metricResult), &(target->metricResult)) != IOTHUB_DEVICE_CONFIGURATION_OK || cloneNameValueArrays_results(&(source->systemMetricsResult), &(target->systemMetricsResult)) != IOTHUB_DEVICE_CONFIGURATION_OK)
            {
                LogError("Cloning failed for IOTHUB_DEVICE_CONFIGURATION_METRICS_RESULT structures");
                result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
            }

            if (cloneNameValueArrays_definitions(&(source->metricsDefinition), &(target->metricsDefinition)) != IOTHUB_DEVICE_CONFIGURATION_OK || cloneNameValueArrays_definitions(&(source->systemMetricsDefinition), &(target->systemMetricsDefinition)) != IOTHUB_DEVICE_CONFIGURATION_OK)
            {
                LogError("Cloning failed for IOTHUB_DEVICE_CONFIGURATION_METRICS_DEFINITION structures");
                result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
            }

            if (cloneNameValueArrays_labels(&(source->labels), &(target->labels)) != IOTHUB_DEVICE_CONFIGURATION_OK)
            {
                LogError("Cloning failed for IOTHUB_DEVICE_CONFIGURATION_LABELS structures");
                result = IOTHUB_DEVICE_CONFIGURATION_ERROR;
            }
        }
    }
    return result;
}