diff options
author | Tim Sander <tim01@iss.tu-darmstadt.de> | 2012-03-01 13:29:44 +0100 |
---|---|---|
committer | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2012-03-01 13:45:25 +0100 |
commit | c1232db37c71d66a5ffd12f64fa193eec1fa8741 (patch) | |
tree | 485d85072c8d82e97d3e81701ca46aca9000fc66 /src/clock.c | |
parent | 934efe02a104c5a58d0632af5c27a49e6f9145ee (diff) | |
download | connman-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.c | 25 |
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); |