mirror of
https://github.com/systemd/systemd.git
synced 2025-09-02 17:49:53 +03:00
timedated: add CanNTP property
If we can't successfully query any ntpd units, set CanNTP to false. GNOME wants to use this to grey out the NTP switch in the UI. https://bugs.freedesktop.org/show_bug.cgi?id=61816
This commit is contained in:
committed by
Lennart Poettering
parent
da61d6b2f2
commit
6ffe5e37c4
@ -45,6 +45,7 @@
|
|||||||
" <interface name=\"org.freedesktop.timedate1\">\n" \
|
" <interface name=\"org.freedesktop.timedate1\">\n" \
|
||||||
" <property name=\"Timezone\" type=\"s\" access=\"read\"/>\n" \
|
" <property name=\"Timezone\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"LocalRTC\" type=\"b\" access=\"read\"/>\n" \
|
" <property name=\"LocalRTC\" type=\"b\" access=\"read\"/>\n" \
|
||||||
|
" <property name=\"CanNTP\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"NTP\" type=\"b\" access=\"read\"/>\n" \
|
" <property name=\"NTP\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <method name=\"SetTime\">\n" \
|
" <method name=\"SetTime\">\n" \
|
||||||
" <arg name=\"usec_utc\" type=\"x\" direction=\"in\"/>\n" \
|
" <arg name=\"usec_utc\" type=\"x\" direction=\"in\"/>\n" \
|
||||||
@ -84,10 +85,12 @@ const char timedate_interface[] _introspect_("timedate1") = INTERFACE;
|
|||||||
typedef struct TZ {
|
typedef struct TZ {
|
||||||
char *zone;
|
char *zone;
|
||||||
bool local_rtc;
|
bool local_rtc;
|
||||||
|
int can_ntp;
|
||||||
int use_ntp;
|
int use_ntp;
|
||||||
} TZ;
|
} TZ;
|
||||||
|
|
||||||
static TZ tz = {
|
static TZ tz = {
|
||||||
|
.can_ntp = -1,
|
||||||
.use_ntp = -1,
|
.use_ntp = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -387,6 +390,7 @@ static int read_ntp(DBusConnection *bus) {
|
|||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tz.can_ntp = 1;
|
||||||
tz.use_ntp =
|
tz.use_ntp =
|
||||||
streq(s, "enabled") ||
|
streq(s, "enabled") ||
|
||||||
streq(s, "enabled-runtime");
|
streq(s, "enabled-runtime");
|
||||||
@ -395,6 +399,7 @@ static int read_ntp(DBusConnection *bus) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* NTP is not installed. */
|
/* NTP is not installed. */
|
||||||
|
tz.can_ntp = 0;
|
||||||
tz.use_ntp = 0;
|
tz.use_ntp = 0;
|
||||||
r = 0;
|
r = 0;
|
||||||
|
|
||||||
@ -588,6 +593,20 @@ finish:
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int property_append_can_ntp(DBusMessageIter *i, const char *property, void *data) {
|
||||||
|
dbus_bool_t db;
|
||||||
|
|
||||||
|
assert(i);
|
||||||
|
assert(property);
|
||||||
|
|
||||||
|
db = tz.can_ntp > 0;
|
||||||
|
|
||||||
|
if (!dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &db))
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int property_append_ntp(DBusMessageIter *i, const char *property, void *data) {
|
static int property_append_ntp(DBusMessageIter *i, const char *property, void *data) {
|
||||||
dbus_bool_t db;
|
dbus_bool_t db;
|
||||||
|
|
||||||
@ -605,6 +624,7 @@ static int property_append_ntp(DBusMessageIter *i, const char *property, void *d
|
|||||||
static const BusProperty bus_timedate_properties[] = {
|
static const BusProperty bus_timedate_properties[] = {
|
||||||
{ "Timezone", bus_property_append_string, "s", offsetof(TZ, zone), true },
|
{ "Timezone", bus_property_append_string, "s", offsetof(TZ, zone), true },
|
||||||
{ "LocalRTC", bus_property_append_bool, "b", offsetof(TZ, local_rtc) },
|
{ "LocalRTC", bus_property_append_bool, "b", offsetof(TZ, local_rtc) },
|
||||||
|
{ "CanNTP", property_append_can_ntp, "b", offsetof(TZ, can_ntp) },
|
||||||
{ "NTP", property_append_ntp, "b", offsetof(TZ, use_ntp) },
|
{ "NTP", property_append_ntp, "b", offsetof(TZ, use_ntp) },
|
||||||
{ NULL, }
|
{ NULL, }
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user