static gboolean marshal_strv (DBusMessageIter *iter, const GValue *value) { DBusMessageIter subiter; char **array; char **elt; gboolean ret = FALSE; g_assert (G_VALUE_TYPE (value) == g_strv_get_type ()); array = g_value_get_boxed (value); if (!dbus_message_iter_open_container (iter, DBUS_TYPE_ARRAY, "s", &subiter)) goto out; /* CHECK IF */ if (array ) { for (elt = array; *elt; elt++) { if (!dbus_message_iter_append_basic (&subiter, DBUS_TYPE_STRING, elt)) goto out; } } if (!dbus_message_iter_close_container (iter, &subiter)) goto out; ret = TRUE; out: return ret; }