summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/slack-timedate.cpp14
-rw-r--r--src/slack-timedate.h38
2 files changed, 12 insertions, 40 deletions
diff --git a/src/slack-timedate.cpp b/src/slack-timedate.cpp
index 223ce78..41a4961 100644
--- a/src/slack-timedate.cpp
+++ b/src/slack-timedate.cpp
@@ -169,7 +169,9 @@ namespace dlackware::timedate
try
{
- introspection_data = Gio::DBus::NodeInfo::create_for_xml(INTROSPECTION_XML);
+ auto introspection_xml = Glib::file_get_contents(dlackware::timedate::introspection_xml);
+
+ introspection_data = Gio::DBus::NodeInfo::create_for_xml(introspection_xml);
}
catch (Glib::Error& slack_err)
{
@@ -303,19 +305,19 @@ gboolean slack_set_time(gint64 seconds_since_epoch, gboolean relative)
{
return FALSE;
}
- ts.tv_sec += static_cast<time_t>(seconds_since_epoch / USEC_PER_SEC);
- ts.tv_nsec += (seconds_since_epoch % USEC_PER_SEC) * NSEC_PER_USEC;
+ ts.tv_sec += static_cast<time_t>(seconds_since_epoch / dlackware::timedate::usec_per_sec);
+ ts.tv_nsec += (seconds_since_epoch % dlackware::timedate::usec_per_sec) * dlackware::timedate::nsec_per_usec;
if (ts.tv_nsec < 0)
{
--ts.tv_sec;
- ts.tv_nsec += USEC_PER_SEC;
+ ts.tv_nsec += dlackware::timedate::usec_per_sec;
}
}
else
{
- ts.tv_sec = static_cast<time_t>(seconds_since_epoch / USEC_PER_SEC);
- ts.tv_nsec = (seconds_since_epoch % USEC_PER_SEC) * NSEC_PER_USEC;
+ ts.tv_sec = static_cast<time_t>(seconds_since_epoch / dlackware::timedate::usec_per_sec);
+ ts.tv_nsec = (seconds_since_epoch % dlackware::timedate::usec_per_sec) * dlackware::timedate::nsec_per_usec;
}
return clock_settime (CLOCK_REALTIME, &ts) == 0;
}
diff --git a/src/slack-timedate.h b/src/slack-timedate.h
index a687ab0..41eb0e7 100644
--- a/src/slack-timedate.h
+++ b/src/slack-timedate.h
@@ -23,46 +23,16 @@
#define BUS_NAME "org.freedesktop.timedate1"
#define BUS_PATH "/org/freedesktop/timedate1"
-#define BUS_INTERFACE "org.freedesktop.timedate1"
-
-#define INTROSPECTION_XML DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
- "<node>\n" \
- " <interface name=\"org.freedesktop.timedate1\">\n" \
- " <property name=\"Timezone\" type=\"s\" access=\"read\"/>\n" \
- " <property name=\"LocalRTC\" 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" \
- " <arg name=\"relative\" type=\"b\" direction=\"in\"/>\n" \
- " <arg name=\"user_interaction\" type=\"b\" direction=\"in\"/>\n" \
- " </method>\n" \
- " <method name=\"SetTimezone\">\n" \
- " <arg name=\"timezone\" type=\"s\" direction=\"in\"/>\n" \
- " <arg name=\"user_interaction\" type=\"b\" direction=\"in\"/>\n" \
- " </method>\n" \
- " <method name=\"SetLocalRTC\">\n" \
- " <arg name=\"local_rtc\" type=\"b\" direction=\"in\"/>\n" \
- " <arg name=\"fix_system\" type=\"b\" direction=\"in\"/>\n" \
- " <arg name=\"user_interaction\" type=\"b\" direction=\"in\"/>\n" \
- " </method>\n" \
- " <method name=\"SetNTP\">\n" \
- " <arg name=\"use_ntp\" type=\"b\" direction=\"in\"/>\n" \
- " <arg name=\"user_interaction\" type=\"b\" direction=\"in\"/>\n" \
- " </method>\n" \
- " <method name=\"ListTimezones\">\n" \
- " <arg name=\"timezones\" type=\"as\" direction=\"out\"/>\n" \
- " </method>" \
- " </interface>\n" \
- "</node>\n"
#define DEFAULT_EXIT_SEC 300
-constexpr gint32 USEC_PER_SEC = 1000000ULL;
-constexpr gint32 NSEC_PER_USEC = 1000ULL;
-
namespace dlackware::timedate
{
constexpr const char *zoneinfo_database = "/usr/share/zoneinfo";
+ constexpr const char *introspection_xml = "/usr/share/dbus-1/interfaces/org.freedesktop.timedate1.xml";
+
+ constexpr const gint32 usec_per_sec = 1000000ULL;
+ constexpr const gint32 nsec_per_usec = 1000ULL;
// Returns the system time zone.
Glib::ustring timezone();