Merge branch 'master' of git://tinc-vpn.org/tinc into 1.1
[tinc] / src / conf.c
index bf8183f..f47faef 100644 (file)
@@ -26,6 +26,7 @@
 #include "splay_tree.h"
 #include "connection.h"
 #include "conf.h"
+#include "list.h"
 #include "logger.h"
 #include "netutl.h"                            /* for str2address */
 #include "protocol.h"
@@ -188,7 +189,7 @@ bool get_config_address(const config_t *cfg, struct addrinfo **result) {
 }
 
 bool get_config_subnet(const config_t *cfg, subnet_t ** result) {
-       subnet_t subnet = {0};
+       subnet_t subnet = {NULL};
 
        if(!cfg)
                return false;
@@ -368,7 +369,7 @@ void read_config_options(splay_tree_t *config_tree, const char *prefix) {
        }
 }
 
-bool read_server_config() {
+bool read_server_config(void) {
        char *fname;
        bool x;
 
@@ -399,6 +400,24 @@ bool read_connection_config(connection_t *c) {
        return x;
 }
 
+bool append_config_file(const char *name, const char *key, const char *value) {
+       char *fname;
+       xasprintf(&fname, "%s/hosts/%s", confbase, name);
+
+       FILE *fp = fopen(fname, "a");
+
+       if(!fp) {
+               logger(LOG_ERR, "Cannot open config file %s: %s", fname, strerror(errno));
+       } else {
+               fprintf(fp, "\n# The following line was automatically added by tinc\n%s = %s\n", key, value);
+               fclose(fp);
+       }
+
+       free(fname);
+
+       return fp;
+}
+
 bool disable_old_keys(FILE *f) {
        char buf[100];
        long pos;