/** * seahorse_util_add_suffix: * @ctx: Gpgme Context * @path: Path of an existing file * @suffix: Suffix type * @prompt: Overwrite prompt text * * Constructs a new path for a file based on @path plus a suffix determined by * @suffix. If ASCII Armor is enabled, the suffix will be '.asc'. Otherwise the * suffix will be '.pgp' if @suffix is %SEAHORSE_CRYPT_SUFFIX or '.sig' if * @suffix is %SEAHORSE_SIG_SUFFIX. * * Returns: A new path with the suffix appended to @path. NULL if prompt cancelled **/ gchar* seahorse_util_add_suffix (const gchar *path, SeahorseSuffix suffix, const gchar *prompt) { GtkWidget *dialog; const gchar *ext; gchar *uri; gchar *t; if (suffix == SEAHORSE_CRYPT_SUFFIX) ext = SEAHORSE_EXT_PGP; else ext = SEAHORSE_EXT_SIG; uri = g_strdup_printf ("%s%s", path, ext); if (prompt && uri && seahorse_util_uri_exists (uri)) { t = g_strdup_printf (prompt, seahorse_util_uri_get_last (uri)); dialog = seahorse_util_chooser_save_new (t, NULL); g_free (t); seahorse_util_chooser_show_key_files (dialog); gtk_file_chooser_select_uri (GTK_FILE_CHOOSER (dialog), uri); g_free (uri); uri = NULL; uri = seahorse_util_chooser_save_prompt (dialog); } return uri; }
/** * seahorse_util_remove_suffix: * @path: Path with a suffix * @prompt:Overwrite prompt text * * Removes a suffix from @path. Does not check if @path actually has a suffix. * * Returns: @path without a suffix. NULL if prompt cancelled **/ gchar* seahorse_util_remove_suffix (const gchar *path, const gchar *prompt) { GtkWidget *dialog; gchar *uri; gchar *t; g_return_val_if_fail (path != NULL, NULL); uri = g_strndup (path, strlen (path) - 4); if (prompt && uri && seahorse_util_uri_exists (uri)) { t = g_strdup_printf (prompt, seahorse_util_uri_get_last (uri)); dialog = seahorse_util_chooser_save_new (t, NULL); g_free (t); seahorse_util_chooser_show_key_files (dialog); gtk_file_chooser_select_uri (GTK_FILE_CHOOSER (dialog), uri); g_free (uri); uri = NULL; uri = seahorse_util_chooser_save_prompt (dialog); } return uri; }
G_MODULE_EXPORT void on_ssh_export_button_clicked (GtkWidget *widget, SeahorseWidget *swidget) { SeahorseSource *sksrc; SeahorseObject *object; GFile *file; GtkDialog *dialog; guchar *results; gsize n_results; gchar* uri = NULL; GError *err = NULL; object = SEAHORSE_OBJECT_WIDGET (swidget)->object; g_return_if_fail (SEAHORSE_IS_SSH_KEY (object)); sksrc = seahorse_object_get_source (object); g_return_if_fail (SEAHORSE_IS_SSH_SOURCE (sksrc)); dialog = seahorse_util_chooser_save_new (_("Export Complete Key"), GTK_WINDOW (seahorse_widget_get_toplevel (swidget))); seahorse_util_chooser_show_key_files (dialog); seahorse_util_chooser_set_filename (dialog, object); uri = seahorse_util_chooser_save_prompt (dialog); if (!uri) return; results = seahorse_ssh_source_export_private (SEAHORSE_SSH_SOURCE (sksrc), SEAHORSE_SSH_KEY (object), &n_results, &err); if (results) { g_return_if_fail (err == NULL); file = g_file_new_for_uri (uri); g_file_replace_contents_async (file, (gchar*)results, n_results, NULL, FALSE, G_FILE_CREATE_PRIVATE, NULL, (GAsyncReadyCallback)export_complete, results); } if (err) { seahorse_util_handle_error (err, _("Couldn't export key.")); g_clear_error (&err); } g_free (uri); }