From b32d167503b0d98f6b612fda768f92f3aad0ad0c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 3 Jul 2012 02:00:05 +0200 Subject: [PATCH 1/1] timedated: replace ntp-units file with an ntp-units.d drop-in dir To be considered by timedated for NTP a package simply has to drop in /usr/lib/systemd/ntp-units.d/foobar.list and write one or more unit names into it. The first one listed is the one that is enabled. --- Makefile.am | 4 --- src/timedate/ntp-units | 4 --- src/timedate/timedated.c | 59 +++++++++++++++++++++++++--------------- 3 files changed, 37 insertions(+), 30 deletions(-) delete mode 100644 src/timedate/ntp-units diff --git a/Makefile.am b/Makefile.am index 1cfbf40f5..3b7ec0b7b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -133,7 +133,6 @@ AM_CPPFLAGS = \ -DSYSTEM_SHUTDOWN_PATH=\"$(systemshutdowndir)\" \ -DSYSTEM_SLEEP_PATH=\"$(systemsleepdir)\" \ -DSYSTEMD_KBD_MODEL_MAP=\"$(pkgdatadir)/kbd-model-map\" \ - -DSYSTEMD_NTP_UNITS=\"$(pkgdatadir)/ntp-units\" \ -DX_SERVER=\"$(bindir)/X\" \ -DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" \ -DPOLKIT_AGENT_BINARY_PATH=\"$(bindir)/pkttyagent\" \ @@ -2802,9 +2801,6 @@ timedated-install-data-hook: INSTALL_DATA_HOOKS += \ timedated-install-data-hook -dist_pkgdata_DATA += \ - src/timedate/ntp-units - MANPAGES += \ man/systemd-timedated.service.8 diff --git a/src/timedate/ntp-units b/src/timedate/ntp-units deleted file mode 100644 index 2a46f6699..000000000 --- a/src/timedate/ntp-units +++ /dev/null @@ -1,4 +0,0 @@ -# NTP service implementations, in order of preference - -chronyd.service -ntpd.service diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 4be7c3a99..5387699bf 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -31,6 +31,7 @@ #include "polkit.h" #include "def.h" #include "hwclock.h" +#include "conf-files.h" #define NULL_ADJTIME_UTC "0.0 0 0\n0\nUTC\n" #define NULL_ADJTIME_LOCAL "0.0 0 0\n0\nLOCAL\n" @@ -304,40 +305,54 @@ static int write_data_local_rtc(void) { } static char** get_ntp_services(void) { - char **r = NULL; - FILE *f; - - f = fopen(SYSTEMD_NTP_UNITS, "re"); - if (!f) + char **r = NULL, **files, **i; + int k; + + k = conf_files_list(&files, ".list", + "/etc/systemd/ntp-units.d", + "/run/systemd/ntp-units.d", + "/usr/local/lib/systemd/ntp-units.d", + "/usr/lib/systemd/ntp-units.d", + NULL); + if (k < 0) return NULL; - for (;;) { - char line[PATH_MAX], *l, **q; + STRV_FOREACH(i, files) { + FILE *f; - if (!fgets(line, sizeof(line), f)) { + f = fopen(*i, "re"); + if (!f) + continue; - if (ferror(f)) - log_error("Failed to read NTP units file: %m"); + for (;;) { + char line[PATH_MAX], *l, **q; - break; - } + if (!fgets(line, sizeof(line), f)) { - l = strstrip(line); - if (l[0] == 0 || l[0] == '#') - continue; + if (ferror(f)) + log_error("Failed to read NTP units file: %m"); + break; + } - q = strv_append(r, l); - if (!q) { - log_error("Out of memory"); - break; + l = strstrip(line); + if (l[0] == 0 || l[0] == '#') + continue; + + q = strv_append(r, l); + if (!q) { + log_error("Out of memory"); + break; + } + + strv_free(r); + r = q; } - strv_free(r); - r = q; + fclose(f); } - fclose(f); + strv_free(files); return r; } -- 2.30.2