diff options
author | Ryan Lortie <desrt@desrt.ca> | 2013-03-04 16:35:02 -0500 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-03-06 15:39:37 +0100 |
commit | 6ffe5e37c47c85f91bf6cc56bc3ff3cf60bffd15 (patch) | |
tree | 45c2a36630a3bd1c397e2f71674252d2487d49b1 | |
parent | da61d6b2f20767a6a4116aac4bbf11281cd3b290 (diff) |
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
-rw-r--r-- | src/timedate/timedated.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 80c24eb62b..77534933c3 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -45,6 +45,7 @@ " <interface name=\"org.freedesktop.timedate1\">\n" \ " <property name=\"Timezone\" type=\"s\" 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" \ " <method name=\"SetTime\">\n" \ " <arg name=\"usec_utc\" type=\"x\" direction=\"in\"/>\n" \ @@ -84,10 +85,12 @@ const char timedate_interface[] _introspect_("timedate1") = INTERFACE; typedef struct TZ { char *zone; bool local_rtc; + int can_ntp; int use_ntp; } TZ; static TZ tz = { + .can_ntp = -1, .use_ntp = -1, }; @@ -387,6 +390,7 @@ static int read_ntp(DBusConnection *bus) { goto finish; } + tz.can_ntp = 1; tz.use_ntp = streq(s, "enabled") || streq(s, "enabled-runtime"); @@ -395,6 +399,7 @@ static int read_ntp(DBusConnection *bus) { } /* NTP is not installed. */ + tz.can_ntp = 0; tz.use_ntp = 0; r = 0; @@ -588,6 +593,20 @@ finish: 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) { 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[] = { { "Timezone", bus_property_append_string, "s", offsetof(TZ, zone), true }, { "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) }, { NULL, } }; |