Use glob() to match and read multiple configuration files with one
include directive.
@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
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);
}
/* ================================================== */
#include <errno.h>
#include <fcntl.h>
#include <float.h>
+#include <glob.h>
#if !defined(__FreeBSD__) && !defined(MACOSX)
#include <malloc.h>
#endif