+ return x;
+}
+
+bool write_host_config(struct meshlink_handle *mesh, const struct splay_tree_t *config_tree, const char *name)
+{
+ char filename[PATH_MAX];
+
+ snprintf(filename,PATH_MAX, "%s" SLASH "hosts" SLASH "%s", mesh->confbase, name);
+ return write_config_file(config_tree, filename);
+}
+
+bool change_config_file(meshlink_handle_t *mesh, const char *name, const char *key, const char *value) {
+ char filename[PATH_MAX];
+ char tmpname[PATH_MAX];
+ char buf[MAX_STRING_SIZE];
+ const int keylen = strlen(key);
+
+ snprintf(filename, PATH_MAX, "%s" SLASH "hosts" SLASH "%s", mesh->confbase, name);
+ snprintf(tmpname, PATH_MAX, "%s.tmp", filename);
+
+ FILE *in = fopen(filename, "r");
+ if(!in) {
+ // Hm, maybe the file does not exist? Try appending.
+ return append_config_file(mesh, name, key, value);