summaryrefslogtreecommitdiff
path: root/src/clock.c
diff options
context:
space:
mode:
authorTim Sander <tim01@iss.tu-darmstadt.de>2012-03-01 13:29:44 +0100
committerDaniel Wagner <daniel.wagner@bmw-carit.de>2012-03-01 13:45:25 +0100
commitc1232db37c71d66a5ffd12f64fa193eec1fa8741 (patch)
tree485d85072c8d82e97d3e81701ca46aca9000fc66 /src/clock.c
parent934efe02a104c5a58d0632af5c27a49e6f9145ee (diff)
downloadconnman-c1232db37c71d66a5ffd12f64fa193eec1fa8741.tar.gz
connman-c1232db37c71d66a5ffd12f64fa193eec1fa8741.tar.bz2
connman-c1232db37c71d66a5ffd12f64fa193eec1fa8741.zip
clock: Accept variant types in SetProperty
According the D-Bus API, the Clock interface accepts variant types.
Diffstat (limited to 'src/clock.c')
-rw-r--r--src/clock.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/clock.c b/src/clock.c
index 0d7f8705..db4974de 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -179,6 +179,11 @@ static DBusMessage *set_property(DBusConnection *conn,
struct timeval tv;
dbus_uint64_t newval;
+ if (type == DBUS_TYPE_VARIANT) {
+ DBusMessageIter variant = value;
+ dbus_message_iter_recurse(&variant, &value);
+ type = dbus_message_iter_get_arg_type(&value);
+ }
if (type != DBUS_TYPE_UINT64)
return __connman_error_invalid_arguments(msg);
@@ -200,6 +205,11 @@ static DBusMessage *set_property(DBusConnection *conn,
const char *strval;
enum time_updates newval;
+ if (type == DBUS_TYPE_VARIANT) {
+ DBusMessageIter variant = value;
+ dbus_message_iter_recurse(&variant, &value);
+ type = dbus_message_iter_get_arg_type(&value);
+ }
if (type != DBUS_TYPE_STRING)
return __connman_error_invalid_arguments(msg);
@@ -220,6 +230,11 @@ static DBusMessage *set_property(DBusConnection *conn,
} else if (g_str_equal(name, "Timezone") == TRUE) {
const char *strval;
+ if (type == DBUS_TYPE_VARIANT) {
+ DBusMessageIter variant = value;
+ dbus_message_iter_recurse(&variant, &value);
+ type = dbus_message_iter_get_arg_type(&value);
+ }
if (type != DBUS_TYPE_STRING)
return __connman_error_invalid_arguments(msg);
@@ -234,6 +249,11 @@ static DBusMessage *set_property(DBusConnection *conn,
const char *strval;
enum timezone_updates newval;
+ if (type == DBUS_TYPE_VARIANT) {
+ DBusMessageIter variant = value;
+ dbus_message_iter_recurse(&variant, &value);
+ type = dbus_message_iter_get_arg_type(&value);
+ }
if (type != DBUS_TYPE_STRING)
return __connman_error_invalid_arguments(msg);
@@ -254,6 +274,11 @@ static DBusMessage *set_property(DBusConnection *conn,
} else if (g_str_equal(name, "Timeservers") == TRUE) {
DBusMessageIter entry;
+ if (type == DBUS_TYPE_VARIANT) {
+ DBusMessageIter variant = value;
+ dbus_message_iter_recurse(&variant, &value);
+ type = dbus_message_iter_get_arg_type(&value);
+ }
if (type != DBUS_TYPE_ARRAY)
return __connman_error_invalid_arguments(msg);