mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-11-23 23:10:57 +07:00
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.
This commit is contained in:
parent
e88dcb8f77
commit
b32d167503
@ -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
|
||||
|
||||
|
@ -1,4 +0,0 @@
|
||||
# NTP service implementations, in order of preference
|
||||
|
||||
chronyd.service
|
||||
ntpd.service
|
@ -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;
|
||||
char **r = NULL, **files, **i;
|
||||
int k;
|
||||
|
||||
f = fopen(SYSTEMD_NTP_UNITS, "re");
|
||||
if (!f)
|
||||
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)) {
|
||||
|
||||
if (ferror(f))
|
||||
log_error("Failed to read NTP units file: %m");
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
l = strstrip(line);
|
||||
if (l[0] == 0 || l[0] == '#')
|
||||
f = fopen(*i, "re");
|
||||
if (!f)
|
||||
continue;
|
||||
|
||||
for (;;) {
|
||||
char line[PATH_MAX], *l, **q;
|
||||
|
||||
q = strv_append(r, l);
|
||||
if (!q) {
|
||||
log_error("Out of memory");
|
||||
break;
|
||||
if (!fgets(line, sizeof(line), f)) {
|
||||
|
||||
if (ferror(f))
|
||||
log_error("Failed to read NTP units file: %m");
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user