+void override_config(const struct ma_config *source, struct ma_config *target)
+{
+ int i;
+
+ if (source->mqtt_host != NULL) {
+ target->mqtt_host = source->mqtt_host;
+ }
+ if (source->mqtt_port != 0) {
+ target->mqtt_port = source->mqtt_port;
+ }
+ if (source->mqtt_username != NULL) {
+ target->mqtt_username = source->mqtt_username;
+ }
+ if (source->mqtt_password != NULL) {
+ target->mqtt_password = source->mqtt_password;
+ }
+ if (source->mqtt_topic != NULL) {
+ target->mqtt_topic = source->mqtt_topic;
+ }
+ if (source->location != NULL) {
+ target->location = source->location;
+ }
+ if (source->capath != NULL) {
+ target->capath = source->capath;
+ }
+ for (i = 0; i < MAX_MACS; ++i) {
+ if (source->macs[i].valid) {
+ memcpy(&target->macs[i], &source->macs[i], sizeof(struct mac_entry));
+ }
+ }
+}
+
+void print_config(const struct ma_config *config)
+{
+ int i, j;
+
+ printf("Config:\n");
+ printf("mqtt_host: %s\n", config->mqtt_host ? config->mqtt_host : "NULL");
+ printf("mqtt_port: %d\n", config->mqtt_port);
+ printf("mqtt_username: %s\n", config->mqtt_username ? config->mqtt_username : "NULL");
+ printf("mqtt_password: %s\n", config->mqtt_password ? config->mqtt_password : "NULL");
+ printf("mqtt_topic: %s\n", config->mqtt_topic ? config->mqtt_topic : "NULL");
+ printf("location: %s\n", config->location ? config->location : "NULL");
+ printf("capath: %s\n", config->capath ? config->capath : "NULL");
+
+ for (i = 0; i < MAX_MACS; ++i) {
+ if (config->macs[i].valid) {
+ printf("macs[%d]: { valid: true, mac: ", i);
+ for (j = 0; j < 6; ++j) {
+ printf("%02x", config->macs[i].mac[j]);
+ if (j < 5) {
+ printf(":");
+ }
+ }
+ printf("\n");
+ } else {
+ printf("macs[%d]: { valid: false }\n", i);
+ }
+ }
+}
+