diff -r 7fe45f6e4f48 -r 1277fb94999f brewco/rdconfig.c --- a/brewco/rdconfig.c Sun Dec 06 14:29:37 2015 +0100 +++ b/brewco/rdconfig.c Sun Dec 06 19:34:39 2015 +0100 @@ -61,10 +61,10 @@ free(unit->uuid); if (unit->name) free(unit->name); - if (unit->hlt_sensor) - free(unit->hlt_sensor); - if (unit->mlt_sensor) - free(unit->mlt_sensor); + if (unit->hlt_sensor.uuid) + free(unit->hlt_sensor.uuid); + if (unit->mlt_sensor.uuid) + free(unit->mlt_sensor.uuid); if (unit->hlt_heater) free(unit->hlt_heater); if (unit->mlt_heater) @@ -273,19 +273,17 @@ return 1; } - if (unit->hlt_sensor) { - if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "HLT_SENSOR_UUID", "%s", unit->hlt_sensor->uuid)) < 0)) { - syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); - return 1; - } - if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "HLT_SENSOR_STATE", "%d", unit->hlt_sensor->state)) < 0)) { - syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); - return 1; - } - if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "HLT_SENSOR_VALUE", "%d", unit->hlt_sensor->value)) < 0)) { - syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); - return 1; - } + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "HLT_SENSOR_UUID", "%s", unit->hlt_sensor.uuid)) < 0)) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; + } + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "HLT_SENSOR_STATE", "%d", unit->hlt_sensor.state)) < 0)) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; + } + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "HLT_SENSOR_VALUE", "%d", unit->hlt_sensor.value)) < 0)) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; } if (unit->hlt_heater) { @@ -308,19 +306,17 @@ return 1; } - if (unit->mlt_sensor) { - if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "MLT_SENSOR_UUID", "%s", unit->mlt_sensor->uuid)) < 0)) { - syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); - return 1; - } - if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "MLT_SENSOR_STATE", "%d", unit->mlt_sensor->state)) < 0)) { - syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); - return 1; - } - if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "MLT_SENSOR_VALUE", "%d", unit->mlt_sensor->value)) < 0)) { - syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); - return 1; - } + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "MLT_SENSOR_UUID", "%s", unit->mlt_sensor.uuid)) < 0)) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; + } + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "MLT_SENSOR_STATE", "%d", unit->mlt_sensor.state)) < 0)) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; + } + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "MLT_SENSOR_VALUE", "%d", unit->mlt_sensor.value)) < 0)) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; } if (unit->mlt_heater) { @@ -728,7 +724,12 @@ unit->uuid = unit->name = NULL; unit->number = 0; unit->active = 0; - unit->hlt_sensor = unit->mlt_sensor = NULL; + unit->hlt_sensor.uuid = xstrcpy((char *)"00000000-0000-0000-0000-000000000000"); + unit->hlt_sensor.state = 0; + unit->hlt_sensor.value = 0; + unit->mlt_sensor.uuid = xstrcpy((char *)"00000000-0000-0000-0000-000000000000"); + unit->mlt_sensor.state = 0; + unit->mlt_sensor.value = 0; unit->hlt_heater = unit->mlt_heater = unit->mlt_pump = NULL; unit->hlt_heater_mltfirst = 0; unit->pump_cycle = 7; @@ -779,24 +780,18 @@ } if ((!xmlStrcmp(cur->name, (const xmlChar *)"HLT_SENSOR_UUID"))) { - if (unit->hlt_sensor == NULL) { - unit->hlt_sensor = (sensor_var *)malloc(sizeof(sensor_var)); - unit->hlt_sensor->uuid[0] = '\0'; - unit->hlt_sensor->state = 1; // missing - unit->hlt_sensor->value = 0; - } - snprintf(unit->hlt_sensor->uuid, 36, "%s", xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); + unit->hlt_sensor.uuid = (char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"HLT_SENSOR_STATE"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); if (sscanf((const char *)key, "%d", &ival) == 1) - unit->hlt_sensor->state = ival; + unit->hlt_sensor.state = ival; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"HLT_SENSOR_VALUE"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); if (sscanf((const char *)key, "%d", &ival) == 1) - unit->hlt_sensor->value = ival; + unit->hlt_sensor.value = ival; xmlFree(key); } @@ -830,24 +825,18 @@ } if ((!xmlStrcmp(cur->name, (const xmlChar *)"MLT_SENSOR_UUID"))) { - if (unit->mlt_sensor == NULL) { - unit->mlt_sensor = (sensor_var *)malloc(sizeof(sensor_var)); - unit->mlt_sensor->uuid[0] = '\0'; - unit->mlt_sensor->state = 1; // missing - unit->mlt_sensor->value = 0; - } - snprintf(unit->mlt_sensor->uuid, 36, "%s", xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); + unit->mlt_sensor.uuid = (char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"MLT_SENSOR_STATE"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); if (sscanf((const char *)key, "%d", &ival) == 1) - unit->mlt_sensor->state = ival; + unit->mlt_sensor.state = ival; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"MLT_SENSOR_VALUE"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); if (sscanf((const char *)key, "%d", &ival) == 1) - unit->mlt_sensor->value = ival; + unit->mlt_sensor.value = ival; xmlFree(key); }