int keyring_lock(const char *keyname) { #ifndef HAVE_GNOME_KEYRING_LOCK print_error(10, "WARNING", "\nThis feature not supported.\n"); return TRUE; #endif if (keyname == NULL) { print_error(GNOME_KEYRING_RESULT_NO_SUCH_KEYRING, "ERROR", "\nInvalid keyring.\n"); return FALSE; } if (!gnome_keyring_is_available()) { print_error(GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON, "ERROR", "\nFailed to communicate with a gnome-keyring-daemon.\n"); return FALSE; } loop = g_main_loop_new(NULL, FALSE); gnome_keyring_lock(keyname, (GnomeKeyringOperationDoneCallback) callback__done, "lock", NULL); g_main_loop_run(loop); if (exit_status) fprintf(stderr, "Locked '%s' keyring.\n", keyname); return exit_status; }
static void on_keyring_lock (GtkAction *action, SeahorseGkrKeyringCommands *self) { SeahorseView *view; SeahorseGkrKeyring *keyring; GList *keyrings, *l; g_return_if_fail (SEAHORSE_IS_GKR_KEYRING_COMMANDS (self)); g_return_if_fail (GTK_IS_ACTION (action)); view = seahorse_commands_get_view (SEAHORSE_COMMANDS (self)); keyrings = seahorse_view_get_selected_matching (view, &keyring_predicate); for (l = keyrings; l; l = g_list_next (l)) { keyring = SEAHORSE_GKR_KEYRING (l->data); g_return_if_fail (SEAHORSE_IS_GKR_KEYRING (l->data)); gnome_keyring_lock (seahorse_gkr_keyring_get_name (l->data), on_keyring_lock_done, g_object_ref (self), g_object_unref); } g_list_free (keyrings); }