This commit is contained in:
parent
e72976840c
commit
ad19cb19d1
@ -169,7 +169,9 @@ namespace dlackware::timedate
|
|||||||
|
|
||||||
try
|
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)
|
catch (Glib::Error& slack_err)
|
||||||
{
|
{
|
||||||
@ -303,19 +305,19 @@ gboolean slack_set_time(gint64 seconds_since_epoch, gboolean relative)
|
|||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
ts.tv_sec += static_cast<time_t>(seconds_since_epoch / USEC_PER_SEC);
|
ts.tv_sec += static_cast<time_t>(seconds_since_epoch / dlackware::timedate::usec_per_sec);
|
||||||
ts.tv_nsec += (seconds_since_epoch % USEC_PER_SEC) * NSEC_PER_USEC;
|
ts.tv_nsec += (seconds_since_epoch % dlackware::timedate::usec_per_sec) * dlackware::timedate::nsec_per_usec;
|
||||||
|
|
||||||
if (ts.tv_nsec < 0)
|
if (ts.tv_nsec < 0)
|
||||||
{
|
{
|
||||||
--ts.tv_sec;
|
--ts.tv_sec;
|
||||||
ts.tv_nsec += USEC_PER_SEC;
|
ts.tv_nsec += dlackware::timedate::usec_per_sec;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ts.tv_sec = static_cast<time_t>(seconds_since_epoch / USEC_PER_SEC);
|
ts.tv_sec = static_cast<time_t>(seconds_since_epoch / dlackware::timedate::usec_per_sec);
|
||||||
ts.tv_nsec = (seconds_since_epoch % USEC_PER_SEC) * NSEC_PER_USEC;
|
ts.tv_nsec = (seconds_since_epoch % dlackware::timedate::usec_per_sec) * dlackware::timedate::nsec_per_usec;
|
||||||
}
|
}
|
||||||
return clock_settime (CLOCK_REALTIME, &ts) == 0;
|
return clock_settime (CLOCK_REALTIME, &ts) == 0;
|
||||||
}
|
}
|
||||||
|
@ -23,46 +23,16 @@
|
|||||||
|
|
||||||
#define BUS_NAME "org.freedesktop.timedate1"
|
#define BUS_NAME "org.freedesktop.timedate1"
|
||||||
#define BUS_PATH "/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
|
#define DEFAULT_EXIT_SEC 300
|
||||||
|
|
||||||
constexpr gint32 USEC_PER_SEC = 1000000ULL;
|
|
||||||
constexpr gint32 NSEC_PER_USEC = 1000ULL;
|
|
||||||
|
|
||||||
namespace dlackware::timedate
|
namespace dlackware::timedate
|
||||||
{
|
{
|
||||||
constexpr const char *zoneinfo_database = "/usr/share/zoneinfo";
|
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.
|
// Returns the system time zone.
|
||||||
Glib::ustring timezone();
|
Glib::ustring timezone();
|
||||||
|
Loading…
Reference in New Issue
Block a user