summaryrefslogtreecommitdiff
path: root/src/clock.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2011-04-18 18:45:24 -0700
committerMarcel Holtmann <marcel@holtmann.org>2011-04-18 18:45:24 -0700
commitabdc3fdc20191826c34432d7617332bfd9f48eca (patch)
tree718c1c32435457960a889e6dccd954943b7fb55b /src/clock.c
parent673843c99b7f7c86d336574359ad768b2714e718 (diff)
downloadconnman-abdc3fdc20191826c34432d7617332bfd9f48eca.tar.gz
connman-abdc3fdc20191826c34432d7617332bfd9f48eca.tar.bz2
connman-abdc3fdc20191826c34432d7617332bfd9f48eca.zip
clock: Add support for handling setting of time
Diffstat (limited to 'src/clock.c')
-rw-r--r--src/clock.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/clock.c b/src/clock.c
index 36440f38..2d3d4c07 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -173,7 +173,24 @@ static DBusMessage *set_property(DBusConnection *conn,
type = dbus_message_iter_get_arg_type(&value);
- if (g_str_equal(name, "TimeUpdates") == TRUE) {
+ if (g_str_equal(name, "Time") == TRUE) {
+ struct timeval tv;
+ dbus_uint64_t newval;
+
+ if (type != DBUS_TYPE_UINT64)
+ return __connman_error_invalid_arguments(msg);
+
+ if (time_updates_config != TIME_UPDATES_MANUAL)
+ return __connman_error_permission_denied(msg);
+
+ dbus_message_iter_get_basic(&value, &newval);
+
+ tv.tv_sec = newval;
+ tv.tv_usec = 0;
+
+ if (settimeofday(&tv, NULL) < 0)
+ return __connman_error_invalid_arguments(msg);
+ } else if (g_str_equal(name, "TimeUpdates") == TRUE) {
const char *strval;
enum time_updates newval;