X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fconf.c;h=4108d8ba2c648c9736954ef2f607e78c1117330d;hb=fbf305c09d91bf34b1504b58d50392df2e6bcfba;hp=87e2ec5426692acca12d4e4e3c5397e5a811422c;hpb=f02d3ed3e135b5326003e7f69f8331ff6a3cc219;p=tinc diff --git a/src/conf.c b/src/conf.c index 87e2ec54..4108d8ba 100644 --- a/src/conf.c +++ b/src/conf.c @@ -24,14 +24,14 @@ #include "system.h" -#include "avl_tree.h" +#include "splay_tree.h" #include "conf.h" #include "logger.h" #include "netutl.h" /* for str2address */ #include "utils.h" /* for cp */ #include "xalloc.h" -avl_tree_t *config_tree; +splay_tree_t *config_tree; int pinginterval = 0; /* seconds between pings */ int pingtimeout = 0; /* seconds to wait for response */ @@ -54,16 +54,16 @@ static int config_compare(const config_t *a, const config_t *b) { return strcmp(a->file, b->file); } -void init_configuration(avl_tree_t ** config_tree) { +void init_configuration(splay_tree_t ** config_tree) { cp(); - *config_tree = avl_alloc_tree((avl_compare_t) config_compare, (avl_action_t) free_config); + *config_tree = splay_alloc_tree((splay_compare_t) config_compare, (splay_action_t) free_config); } -void exit_configuration(avl_tree_t ** config_tree) { +void exit_configuration(splay_tree_t ** config_tree) { cp(); - avl_delete_tree(*config_tree); + splay_delete_tree(*config_tree); *config_tree = NULL; } @@ -88,13 +88,13 @@ void free_config(config_t *cfg) { free(cfg); } -void config_add(avl_tree_t *config_tree, config_t *cfg) { +void config_add(splay_tree_t *config_tree, config_t *cfg) { cp(); - avl_insert(config_tree, cfg); + splay_insert(config_tree, cfg); } -config_t *lookup_config(avl_tree_t *config_tree, char *variable) { +config_t *lookup_config(splay_tree_t *config_tree, char *variable) { config_t cfg, *found; cp(); @@ -103,7 +103,7 @@ config_t *lookup_config(avl_tree_t *config_tree, char *variable) { cfg.file = ""; cfg.line = 0; - found = avl_search_closest_greater(config_tree, &cfg); + found = splay_search_closest_greater(config_tree, &cfg); if(!found) return NULL; @@ -114,13 +114,13 @@ config_t *lookup_config(avl_tree_t *config_tree, char *variable) { return found; } -config_t *lookup_config_next(avl_tree_t *config_tree, const config_t *cfg) { - avl_node_t *node; +config_t *lookup_config_next(splay_tree_t *config_tree, const config_t *cfg) { + splay_node_t *node; config_t *found; cp(); - node = avl_search_node(config_tree, cfg); + node = splay_search_node(config_tree, cfg); if(node) { if(node->next) { @@ -303,7 +303,7 @@ static char *readline(FILE * fp, char **buf, size_t *buflen) { Parse a configuration file and put the results in the configuration tree starting at *base. */ -int read_config_file(avl_tree_t *config_tree, const char *fname) { +int read_config_file(splay_tree_t *config_tree, const char *fname) { int err = -2; /* Parse error */ FILE *fp; char *buffer, *line; @@ -410,66 +410,3 @@ bool read_server_config() { return x == 0; } - -FILE *ask_and_open(const char *filename, const char *what, const char *mode) { - FILE *r; - char *directory; - char *fn; - - /* Check stdin and stdout */ - if(!isatty(0) || !isatty(1)) { - /* Argh, they are running us from a script or something. Write - the files to the current directory and let them burn in hell - for ever. */ - fn = xstrdup(filename); - } else { - /* Ask for a file and/or directory name. */ - fprintf(stdout, _("Please enter a file to save %s to [%s]: "), - what, filename); - fflush(stdout); - - fn = readline(stdin, NULL, NULL); - - if(!fn) { - fprintf(stderr, _("Error while reading stdin: %s\n"), - strerror(errno)); - return NULL; - } - - if(!strlen(fn)) - /* User just pressed enter. */ - fn = xstrdup(filename); - } - -#ifdef HAVE_MINGW - if(fn[0] != '\\' && fn[0] != '/' && !strchr(fn, ':')) { -#else - if(fn[0] != '/') { -#endif - /* The directory is a relative path or a filename. */ - char *p; - - directory = get_current_dir_name(); - asprintf(&p, "%s/%s", directory, fn); - free(fn); - free(directory); - fn = p; - } - - umask(0077); /* Disallow everything for group and other */ - - /* Open it first to keep the inode busy */ - - r = fopen(fn, mode); - - if(!r) { - fprintf(stderr, _("Error opening file `%s': %s\n"), - fn, strerror(errno)); - free(fn); - return NULL; - } - - free(fn); - - return r; -}