]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
Add include directive
authorMiroslav Lichvar <mlichvar@redhat.com>
Wed, 6 Apr 2011 14:58:12 +0000 (16:58 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Wed, 6 Apr 2011 14:58:12 +0000 (16:58 +0200)
chrony.texi
conf.c

index f3502a6219f550ee0aa34bab778315747886a473..ec755a1f4c34d8d3e31ef2794f61162e0336e433 100644 (file)
@@ -1179,6 +1179,7 @@ directives can occur in any order in the file.
 * dumpdir directive::           Specify directory for dumping measurements
 * dumponexit directive::        Dump measurements when daemon exits
 * fallbackdrift directive::     Specify fallback drift intervals
+* include directive::           Include a configuration file
 * initstepslew directive::      Trim the system clock on boot-up.
 * keyfile directive::           Specify location of file containing keys
 * linux_hz directive::          Define a non-standard value of the kernel HZ constant
@@ -1601,6 +1602,17 @@ By default (or if the specified maximum or minimum is 0), no fallbacks
 will be used and the clock frequency will stay at the last value
 calculated before synchronisation was lost.
 @c }}}
+@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.
+
+@example
+include /etc/chrony/local.conf
+@end example
+@c }}}
 @c {{{ initstepslew
 @node initstepslew directive
 @subsection initstepslew
diff --git a/conf.c b/conf.c
index c862d90b124d7ccdb8f98aa183b397d18f2b4833..2667d2bbc78c0b732c3fbbb5d56fdf57d18b0352 100644 (file)
--- a/conf.c
+++ b/conf.c
@@ -107,6 +107,7 @@ static void parse_linux_freq_scale(const char *);
 static void parse_sched_priority(const char *);
 static void parse_lockall(const char *);
 static void parse_tempcomp(const char *);
+static void parse_include(const char *);
 
 /* ================================================== */
 /* Configuration variables */
@@ -261,6 +262,7 @@ static const Command commands[] = {
   {"tempcomp", 8, parse_tempcomp},
   {"reselectdist", 12, parse_reselectdist},
   {"stratumweight", 13, parse_stratumweight},
+  {"include", 7, parse_include},
   {"linux_hz", 8, parse_linux_hz},
   {"linux_freq_scale", 16, parse_linux_freq_scale},
   {"sched_priority", 14, parse_sched_priority},
@@ -313,6 +315,7 @@ CNF_ReadFile(const char *filename)
   char line[2048];
   char *p;
   int i, ok;
+  int prev_line_number;
 
   if (filename == NULL) {
     filename = DEFAULT_CONF_FILE;
@@ -323,6 +326,9 @@ CNF_ReadFile(const char *filename)
     LOG(LOGS_ERR, LOGF_Configure, "Could not open configuration file [%s]", filename);
   } else {
 
+    /* Save current line number in case this is an included file */
+    prev_line_number = line_number;
+
     line_number = 0;
 
     /* Success */
@@ -357,6 +363,8 @@ CNF_ReadFile(const char *filename)
 
     }
 
+    line_number = prev_line_number;
+
     fclose(in);
   }
 
@@ -1218,6 +1226,16 @@ parse_tempcomp(const char *line)
 
 /* ================================================== */
 
+static void
+parse_include(const char *line)
+{
+  while (isspace(line[0]))
+    line++;
+  CNF_ReadFile(line);
+}
+
+/* ================================================== */
+
 static void
 parse_linux_hz(const char *line)
 {