diff --git a/chrony.texi.in b/chrony.texi.in index 0b31bb6..d44399a 100644 --- a/chrony.texi.in +++ b/chrony.texi.in @@ -1668,12 +1668,15 @@ hwclockfile /etc/adjtime @c {{{ include @node include directive @subsection include -The @code{include} directive includes a specified configuration file. -This is useful when maintaining configuration on multiple hosts to -keep the differences in a separate file. +The @code{include} directive includes a specified configuration file or +multiple configuration files when a wildcard pattern is specified. This can be +useful when maintaining configuration on multiple hosts to keep the differences +in separate files. + +An example of the command is @example -include @SYSCONFDIR@/chrony/local.conf +include @SYSCONFDIR@/chrony.d/*.conf @end example @c }}} @c {{{ initstepslew diff --git a/conf.c b/conf.c index 1613bcb..0d58b0e 100644 --- a/conf.c +++ b/conf.c @@ -1236,8 +1236,20 @@ parse_tempcomp(char *line) static void parse_include(char *line) { + glob_t gl; + size_t i; + check_number_of_args(line, 1); - CNF_ReadFile(line); + + if (glob(line, 0, NULL, &gl)) { + DEBUG_LOG(LOGF_Configure, "glob of %s failed", line); + return; + } + + for (i = 0; i < gl.gl_pathc; i++) + CNF_ReadFile(gl.gl_pathv[i]); + + globfree(&gl); } /* ================================================== */ diff --git a/sysincl.h b/sysincl.h index 81ae97e..4976e97 100644 --- a/sysincl.h +++ b/sysincl.h @@ -39,6 +39,7 @@ #include #include #include +#include #if !defined(__FreeBSD__) && !defined(MACOSX) #include #endif