100 GError *
error = NULL;
101 gunichar2 *
out = g_utf8_to_utf16(in, -1, &read, &written, &
error);
112 for(
i = 0;
i < written; ++
i)
117 guint bytes =
sizeof(gunichar2) * written;
118 guint BE_bytes = GUINT_TO_BE(bytes);
119 *
size =
sizeof(guint) + bytes;
120 gchar *result = g_malloc(*
size);
122 memcpy(result, &BE_bytes,
sizeof(guint));
123 memcpy(result +
sizeof(guint),
out, bytes);
145 GError *
error = NULL;
165 g_variant_new(
"(sasassb)",
"kwalletd", NULL, NULL,
"",
FALSE),
166 NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &
error);
173 GVariant *child = g_variant_get_child_value(ret, 2);
174 gchar *error_string = g_variant_dup_string(child, NULL);
175 g_variant_unref(child);
176 g_variant_unref(ret);
178 if(error_string && error_string[0] !=
'\0')
193 GError *
error = NULL;
196 if(context->
proxy) g_object_unref(context->
proxy);
198 context->
proxy = g_dbus_proxy_new_sync(context->
connection, G_DBUS_PROXY_FLAGS_NONE, NULL,
203 context->
proxy = NULL;
209 = g_dbus_proxy_call_sync(context->
proxy,
"isEnabled", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &
error);
212 GVariant *child = g_variant_get_child_value(ret, 0);
213 gboolean is_enabled = g_variant_get_boolean(child);
214 g_variant_unref(child);
215 g_variant_unref(ret);
222 ret = g_dbus_proxy_call_sync(context->
proxy,
"networkWallet", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL,
225 child = g_variant_get_child_value(ret, 0);
226 context->
wallet_name = g_variant_dup_string(child, NULL);
227 g_variant_unref(child);
228 g_variant_unref(ret);
244 GError *
error = NULL;
245 context->
connection = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &
error);
270 g_object_unref(c->connection);
271 g_object_unref(c->proxy);
281 GError *
error = NULL;
291 GVariant *ret = g_dbus_proxy_call_sync(context->
proxy,
"open",
293 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &
error);
297 g_variant_unref(ret);
301 GVariant *child = g_variant_get_child_value(ret, 0);
302 handle = g_variant_get_int32(child);
303 g_variant_unref(child);
304 g_variant_unref(ret);
307 gboolean has_folder =
FALSE;
317 ret = g_dbus_proxy_call_sync(context->
proxy,
"hasFolder",
323 g_variant_unref(ret);
327 child = g_variant_get_child_value(ret, 0);
328 has_folder = g_variant_get_boolean(child);
329 g_variant_unref(child);
330 g_variant_unref(ret);
336 gboolean success =
FALSE;
346 ret = g_dbus_proxy_call_sync(context->
proxy,
"createFolder",
348 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &
error);
352 g_variant_unref(ret);
356 child = g_variant_get_child_value(ret, 0);
357 success = g_variant_get_boolean(child);
358 g_variant_unref(child);
359 g_variant_unref(ret);
372 printf(
"slot %s\n", slot);
374 GArray *byte_array = g_array_new(
FALSE,
FALSE,
sizeof(gchar));
377 g_hash_table_iter_init(&iter, table);
380 guint
size = g_hash_table_size(table);
384 g_array_append_vals(byte_array, &
size,
sizeof(guint) /
sizeof(gchar));
386 while(g_hash_table_iter_next(&iter, &
key, &
value))
393 gchar *byte_array_data = g_array_free(byte_array,
FALSE);
397 g_array_append_vals(byte_array, new_key, length);
403 gchar *byte_array_data = g_array_free(byte_array,
FALSE);
407 g_array_append_vals(byte_array, new_value, length);
412 GError *
error = NULL;
424 GVariant *ret = g_dbus_proxy_call_sync(
425 context->
proxy,
"writeMap",
427 g_variant_new_from_data(G_VARIANT_TYPE_BYTESTRING, byte_array->data, byte_array->len,
428 TRUE, g_free, byte_array->data),
430 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &
error);
432 g_array_free(byte_array,
FALSE);
436 g_variant_unref(ret);
440 GVariant *child = g_variant_get_child_value(ret, 0);
441 int return_code = g_variant_get_int32(child);
442 g_variant_unref(child);
443 g_variant_unref(ret);
449 return return_code == 0;
454 memcpy(length, pos,
sizeof(gint));
455 *length = GUINT_FROM_BE(*length);
459 gunichar2 *tmp_string = (gunichar2 *)malloc(*length);
460 memcpy(tmp_string, pos, *length);
462 for(j = 0; j < ((*length) /
sizeof(gunichar2)); j++)
464 tmp_string[j] = g_ntohs(tmp_string[j]);
468 GError *
error = NULL;
469 gchar *
out = g_utf16_to_utf8(tmp_string, *length /
sizeof(gunichar2), &read, &written, &
error);
480 *length +=
sizeof(gint);
488 GError *
error = NULL;
491 gboolean has_entry =
FALSE;
503 GVariant *ret = g_dbus_proxy_call_sync(context->
proxy,
"hasEntry",
505 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &
error);
509 g_variant_unref(ret);
513 GVariant *child = g_variant_get_child_value(ret, 0);
514 has_entry = g_variant_get_boolean(child);
515 g_variant_unref(child);
516 g_variant_unref(ret);
518 if(!has_entry)
return table;
529 ret = g_dbus_proxy_call_sync(context->
proxy,
"readMapList",
531 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &
error);
535 g_variant_unref(ret);
539 child = g_variant_get_child_value(ret, 0);
542 if(g_variant_n_children(child) < 1)
544 g_variant_unref(child);
545 g_variant_unref(ret);
549 GVariant *element = g_variant_get_child_value(child, 0);
551 g_variant_get(element,
"{sv}", NULL, &
v);
553 const gchar *byte_array = g_variant_get_data(
v);
557 g_variant_unref(element);
558 g_variant_unref(child);
559 g_variant_unref(ret);
563 int entries = GINT_FROM_BE(*((
int *)byte_array));
564 byte_array +=
sizeof(gint);
566 for(
int i = 0;
i < entries;
i++)
571 byte_array += length;
575 byte_array += length;
579 g_hash_table_insert(table,
key,
value);
583 g_variant_unref(element);
584 g_variant_unref(child);
585 g_variant_unref(ret);
static void error(char *msg)
static const gint invalid_kwallet_handle
const backend_kwallet_context_t * dt_pwstorage_kwallet_new()
static gboolean check_error(GError *error)
void dt_pwstorage_kwallet_destroy(const backend_kwallet_context_t *context)
static const gchar * app_id
static gboolean start_kwallet(backend_kwallet_context_t *context)
static const gchar * kwallet_folder
GHashTable * dt_pwstorage_kwallet_get(const backend_kwallet_context_t *context, const gchar *slot)
static const gchar * klauncher_service_name
gboolean dt_pwstorage_kwallet_set(const backend_kwallet_context_t *context, const gchar *slot, GHashTable *table)
static const gchar * kwallet_path
static const gchar * kwallet_interface
static gboolean init_kwallet(backend_kwallet_context_t *context)
static gchar * array2string(const gchar *pos, guint *length)
static gchar * char2qstring(const gchar *in, gsize *size)
static int get_wallet_handle(const backend_kwallet_context_t *context)
static const gchar * klauncher_interface
static const gchar * kwallet_service_name
static const gchar * klauncher_path
const dt_colormatrix_t dt_aligned_pixel_t out
void dt_print(dt_debug_thread_t thread, const char *msg,...)
static void dt_free_gpointer(gpointer ptr)
static const dt_aligned_pixel_simd_t value
#define IS_NULL_PTR(p)
C is way too permissive with !=, == and if(var) checks, which can mean too many things depending on w...
GDBusConnection * connection