diff options
author | llyzs <llyzs.vic@gmail.com> | 2011-02-06 10:39:00 +0300 |
---|---|---|
committer | Vic Lee (llyzs) <llyzs@b6cfa94a-2857-405c-b0d6-536ef9fc39e1> | 2011-02-06 10:39:00 +0300 |
commit | 2b72284688ec9799ac865d932fddaa95f8197d0c (patch) | |
tree | 713a524cc701bc7f581bcfcac1731039dd99fbca /remmina | |
parent | de9fb506dd7b0c46bfb020eefa2f4817cc4f78e0 (diff) |
Various fixes for gnome-keyring related codes
Diffstat (limited to 'remmina')
-rw-r--r-- | remmina/include/remmina/plugin.h | 5 | ||||
-rw-r--r-- | remmina/src/remminafile.c | 30 | ||||
-rw-r--r-- | remmina/src/remminafile.h | 2 | ||||
-rw-r--r-- | remmina/src/remminafileeditor.c | 9 |
4 files changed, 27 insertions, 19 deletions
diff --git a/remmina/include/remmina/plugin.h b/remmina/include/remmina/plugin.h index 3262efc3c..3de9979fd 100644 --- a/remmina/include/remmina/plugin.h +++ b/remmina/include/remmina/plugin.h @@ -127,9 +127,6 @@ typedef struct _RemminaSecretPlugin void (* store_password) (RemminaFile *remminafile, const gchar *key, const gchar *password); gchar* (* get_password) (RemminaFile *remminafile, const gchar *key); void (* delete_password) (RemminaFile *remminafile, const gchar *key); - void (* store_group_password) (const gchar *name, const gchar *password); - gchar* (* get_group_password) (const gchar *name); - void (* delete_group_password) (const gchar *name); } RemminaSecretPlugin; /* Plugin Service is a struct containing a list of function pointers, @@ -182,7 +179,7 @@ typedef struct _RemminaPluginService const gchar* (* file_get_path) (RemminaFile *remminafile); void (* file_set_string) (RemminaFile *remminafile, const gchar *setting, const gchar *value); const gchar* (* file_get_string) (RemminaFile *remminafile, const gchar *setting); - const gchar* (* file_get_secret) (RemminaFile *remminafile, const gchar *setting); + gchar* (* file_get_secret) (RemminaFile *remminafile, const gchar *setting); void (* file_set_int) (RemminaFile *remminafile, const gchar *setting, gint value); gint (* file_get_int) (RemminaFile *remminafile, const gchar *setting, gint default_value); diff --git a/remmina/src/remminafile.c b/remmina/src/remminafile.c index a6016a613..798ff7af0 100644 --- a/remmina/src/remminafile.c +++ b/remmina/src/remminafile.c @@ -181,7 +181,14 @@ remmina_file_load (const gchar *filename) if (encrypted) { s = g_key_file_get_string (gkeyfile, "remmina", key, NULL); - remmina_file_set_string_ref (remminafile, key, remmina_crypt_decrypt (s)); + if (g_strcmp0 (s, ".") == 0) + { + remmina_file_set_string (remminafile, key, s); + } + else + { + remmina_file_set_string_ref (remminafile, key, remmina_crypt_decrypt (s)); + } g_free (s); } else @@ -230,20 +237,19 @@ remmina_file_get_string (RemminaFile *remminafile, const gchar *setting) return value && value[0] ? value : NULL; } -const gchar* +gchar* remmina_file_get_secret (RemminaFile *remminafile, const gchar *setting) { RemminaSecretPlugin *plugin; - gchar *value; + const gchar *cs; plugin = remmina_plugin_manager_get_secret_plugin (); + cs = remmina_file_get_string (remminafile, setting); if (plugin) { - if (remminafile->filename) + if (remminafile->filename && g_strcmp0 (cs, ".") == 0) { - value = plugin->get_password (remminafile, setting); - remmina_file_set_string_ref (remminafile, setting, value); - return value && value[0] ? value : NULL; + return plugin->get_password (remminafile, setting); } else { @@ -252,7 +258,7 @@ remmina_file_get_secret (RemminaFile *remminafile, const gchar *setting) } else { - return remmina_file_get_string (remminafile, setting); + return g_strdup (cs); } } @@ -295,13 +301,17 @@ remmina_file_store_group (RemminaFile *remminafile, GKeyFile *gkeyfile, RemminaS { if (plugin) { - g_key_file_set_string (gkeyfile, "remmina", key, ""); if (value && value[0]) { - plugin->store_password (remminafile, key, value); + if (g_strcmp0 (value, ".") != 0) + { + plugin->store_password (remminafile, key, value); + } + g_key_file_set_string (gkeyfile, "remmina", key, "."); } else { + g_key_file_set_string (gkeyfile, "remmina", key, ""); plugin->delete_password (remminafile, key); } } diff --git a/remmina/src/remminafile.h b/remmina/src/remminafile.h index 141489645..273c25876 100644 --- a/remmina/src/remminafile.h +++ b/remmina/src/remminafile.h @@ -56,7 +56,7 @@ RemminaFile* remmina_file_load (const gchar *filename); void remmina_file_set_string (RemminaFile *remminafile, const gchar *setting, const gchar *value); void remmina_file_set_string_ref (RemminaFile *remminafile, const gchar *setting, gchar *value); const gchar* remmina_file_get_string (RemminaFile *remminafile, const gchar *setting); -const gchar* remmina_file_get_secret (RemminaFile *remminafile, const gchar *setting); +gchar* remmina_file_get_secret (RemminaFile *remminafile, const gchar *setting); void remmina_file_set_int (RemminaFile *remminafile, const gchar *setting, gint value); gint remmina_file_get_int (RemminaFile *remminafile, const gchar *setting, gint default_value); /* Create or overwrite the .remmina file */ diff --git a/remmina/src/remminafileeditor.c b/remmina/src/remminafileeditor.c index d950ed7b7..2e791bcc2 100644 --- a/remmina/src/remminafileeditor.c +++ b/remmina/src/remminafileeditor.c @@ -382,7 +382,7 @@ static void remmina_file_editor_create_password (RemminaFileEditor *gfe, GtkWidget *table, gint row) { GtkWidget *widget; - const gchar *cs; + gchar *s; widget = gtk_label_new (_("Password")); gtk_widget_show (widget); @@ -395,10 +395,11 @@ remmina_file_editor_create_password (RemminaFileEditor *gfe, GtkWidget *table, g gtk_entry_set_visibility (GTK_ENTRY (widget), FALSE); gfe->priv->password_entry = widget; - cs = remmina_file_get_secret (gfe->priv->remmina_file, "password"); - if (cs) + s = remmina_file_get_secret (gfe->priv->remmina_file, "password"); + if (s) { - gtk_entry_set_text (GTK_ENTRY (widget), cs); + gtk_entry_set_text (GTK_ENTRY (widget), s); + g_free (s); } } |