1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

Implements wildcard matching in config file include.

Also fixes some minor bugs in include.

Thanks Kelly Cochran for suggestion and draft patch.
This commit is contained in:
Ondrej Zajicek
2012-07-18 19:29:33 +02:00
parent abced4a914
commit 4be266a983
7 changed files with 179 additions and 100 deletions

View File

@@ -162,29 +162,6 @@ cf_read(byte *dest, unsigned int len, int fd)
return l;
}
static int
cf_open(char *filename)
{
char full_name[BIRD_FNAME_MAX];
char *cur = filename;
int ret;
if (*filename != '/') {
char dir[BIRD_FNAME_MAX];
strncpy(dir, config_name, sizeof(dir));
dir[sizeof(dir)-1] = 0;
snprintf(full_name, sizeof(full_name), "%s/%s", dirname(dir), filename);
full_name[sizeof(full_name)-1] = 0;
cur = full_name;
}
if ((ret = open(cur, O_RDONLY)) == -1)
cf_error("Unable to open included configuration file: %s", cur);
return ret;
}
void
sysdep_preconfig(struct config *c)
{
@@ -216,7 +193,6 @@ unix_read_config(struct config **cp, char *name)
if (conf->file_fd < 0)
return 0;
cf_read_hook = cf_read;
cf_open_hook = cf_open;
ret = config_parse(conf);
close(conf->file_fd);
return ret;