[geany/geany-plugins] 90bcb9: Merge branch 'fixes/geanypg'

Colomban Wendling git-noreply at xxxxx
Sun Jul 8 14:22:55 UTC 2012


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Sun, 08 Jul 2012 14:22:55
Commit:      90bcb9d11071df446c04f1699165a50d59c8ccb1
             https://github.com/geany/geany-plugins/commit/90bcb9d11071df446c04f1699165a50d59c8ccb1

Log Message:
-----------
Merge branch 'fixes/geanypg'


Modified Paths:
--------------
    geanypg/src/decrypt_cb.c
    geanypg/src/encrypt_cb.c
    geanypg/src/geanypg.c
    geanypg/src/geanypg.h
    geanypg/src/helper_functions.c
    geanypg/src/key_selection_dialog.c
    geanypg/src/pinentry.c
    geanypg/src/sign_cb.c
    geanypg/src/verify_aux.c
    geanypg/src/verify_cb.c

Modified: geanypg/src/decrypt_cb.c
48 files changed, 25 insertions(+), 23 deletions(-)
===================================================================
@@ -1,26 +1,27 @@
-//      decrypt_cb.c
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
+/*      decrypt_cb.c
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
 
 
 #include "geanypg.h"
 
-void geanypg_decrypt_verify(encrypt_data * ed)
+static void geanypg_decrypt_verify(encrypt_data * ed)
 {
     gpgme_data_t plain, cipher;
     gpgme_error_t err;
@@ -37,9 +38,9 @@ void geanypg_decrypt_verify(encrypt_data * ed)
     geanypg_load_buffer(&cipher);
 
     err = gpgme_op_decrypt_verify(ed->ctx, cipher, plain);
-    if (gpgme_err_code(err) == GPG_ERR_NO_DATA) // no encription, but maybe signatures
+    if (gpgme_err_code(err) == GPG_ERR_NO_DATA) /* no encription, but maybe signatures */
     {
-        // maybe reaload cipher
+        /* maybe reaload cipher */
         gpgme_data_release(cipher);
         geanypg_load_buffer(&cipher);
         rewind(tempfile);
@@ -55,7 +56,7 @@ void geanypg_decrypt_verify(encrypt_data * ed)
     }
 
     fclose(tempfile);
-    // release buffers
+    /* release buffers */
     gpgme_data_release(cipher);
     gpgme_data_release(plain);
 }
@@ -63,8 +64,9 @@ void geanypg_decrypt_verify(encrypt_data * ed)
 void geanypg_decrypt_cb(GtkMenuItem * menuitem, gpointer user_data)
 {
     encrypt_data ed;
+    gpgme_error_t err;
     geanypg_init_ed(&ed);
-    gpgme_error_t err = gpgme_new(&ed.ctx);
+    err = gpgme_new(&ed.ctx);
     if (err && geanypg_show_err_msg(err))
         return;
     gpgme_set_protocol(ed.ctx, GPGME_PROTOCOL_OpenPGP);


Modified: geanypg/src/encrypt_cb.c
48 files changed, 25 insertions(+), 23 deletions(-)
===================================================================
@@ -1,27 +1,28 @@
-//      encrypt_cb.c
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
+/*      encrypt_cb.c
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
 
 
 #include "geanypg.h"
 
-void geanypg_encrypt(encrypt_data * ed, gpgme_key_t * recp, int sign, int flags)
-{   // FACTORIZE
+static void geanypg_encrypt(encrypt_data * ed, gpgme_key_t * recp, int sign, int flags)
+{   /* FACTORIZE */
     gpgme_data_t plain, cipher;
     gpgme_error_t err;
     FILE * tempfile;
@@ -36,7 +37,7 @@ void geanypg_encrypt(encrypt_data * ed, gpgme_key_t * recp, int sign, int flags)
 
     geanypg_load_buffer(&plain);
 
-    // do the actual encryption
+    /* do the actual encryption */
     if (sign)
         err = gpgme_op_encrypt_sign(ed->ctx, recp, flags, plain, cipher);
     else
@@ -50,7 +51,7 @@ void geanypg_encrypt(encrypt_data * ed, gpgme_key_t * recp, int sign, int flags)
     }
 
     fclose(tempfile);
-    // release buffers
+    /* release buffers */
     gpgme_data_release(plain);
     gpgme_data_release(cipher);
 }
@@ -59,8 +60,9 @@ void geanypg_encrypt_cb(GtkMenuItem * menuitem, gpointer user_data)
 {
     int sign;
     encrypt_data ed;
+    gpgme_error_t err;
     geanypg_init_ed(&ed);
-    gpgme_error_t err = gpgme_new(&ed.ctx);
+    err = gpgme_new(&ed.ctx);
     if (err && geanypg_show_err_msg(err))
         return;
     gpgme_set_armor(ed.ctx, 1);


Modified: geanypg/src/geanypg.c
66 files changed, 37 insertions(+), 29 deletions(-)
===================================================================
@@ -1,21 +1,22 @@
-//      geanypg.c
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
+/*      geanypg.c
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
 
 #include "geanypg.h"
 
@@ -41,12 +42,12 @@
 
 static gpgme_error_t geanypg_init_gpgme(void)
 {
-    // Initialize the locale environment.
+    /* Initialize the locale environment. */
     setlocale(LC_ALL, "");
     fprintf(stderr, "GeanyPG: %s %s\n", _("Using libgpgme version:"),
             gpgme_check_version("1.1.0"));
     gpgme_set_locale(NULL, LC_CTYPE, setlocale(LC_CTYPE, NULL));
-#ifdef LC_MESSAGES // only necessary for portability to W32 systems
+#ifdef LC_MESSAGES /* only necessary for portability to W32 systems */
     gpgme_set_locale(NULL, LC_MESSAGES, setlocale(LC_MESSAGES, NULL));
 #endif
     return gpgme_engine_check_version(GPGME_PROTOCOL_OpenPGP);
@@ -63,22 +64,29 @@ gpgme_error_t geanypg_show_err_msg(gpgme_error_t err)
 
 void plugin_init(GeanyData *data)
 {
+    GtkWidget * submenu;
+    GtkWidget * encrypt;
+    GtkWidget * sign;
+    GtkWidget * decrypt;
+    GtkWidget * verify;
+
     gpgme_error_t err = geanypg_init_gpgme();
     if (err)
     {
         geanypg_show_err_msg(err);
         return;
     }
-    // Create a new menu item and show it
+    /* Create a new menu item and show it */
     main_menu_item = gtk_menu_item_new_with_mnemonic("GeanyPG");
     gtk_widget_show(main_menu_item);
+    ui_add_document_sensitive(main_menu_item);
 
-    GtkWidget * submenu = gtk_menu_new();
+    submenu = gtk_menu_new();
     gtk_widget_show(submenu);
-    GtkWidget * encrypt = gtk_menu_item_new_with_mnemonic(_("Encrypt"));
-    GtkWidget * sign = gtk_menu_item_new_with_mnemonic(_("Sign"));
-    GtkWidget * decrypt = gtk_menu_item_new_with_mnemonic(_("Decrypt / Verify"));
-    GtkWidget * verify = gtk_menu_item_new_with_mnemonic(_("Verify detached signature"));
+    encrypt = gtk_menu_item_new_with_mnemonic(_("Encrypt"));
+    sign = gtk_menu_item_new_with_mnemonic(_("Sign"));
+    decrypt = gtk_menu_item_new_with_mnemonic(_("Decrypt / Verify"));
+    verify = gtk_menu_item_new_with_mnemonic(_("Verify detached signature"));
 
     gtk_widget_show(encrypt);
     gtk_widget_show(sign);
@@ -92,12 +100,12 @@ void plugin_init(GeanyData *data)
 
     gtk_menu_item_set_submenu(GTK_MENU_ITEM(main_menu_item), submenu);
 
-    // Attach the new menu item to the Tools menu
+    /* Attach the new menu item to the Tools menu */
     gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu),
         main_menu_item);
 
-    // Connect the menu item with a callback function
-    // which is called when the item is clicked
+    /* Connect the menu item with a callback function
+     * which is called when the item is clicked */
     g_signal_connect(encrypt, "activate", G_CALLBACK(geanypg_encrypt_cb), NULL);
     g_signal_connect(sign,    "activate", G_CALLBACK(geanypg_sign_cb), NULL);
     g_signal_connect(decrypt, "activate", G_CALLBACK(geanypg_decrypt_cb), NULL);


Modified: geanypg/src/geanypg.h
47 files changed, 24 insertions(+), 23 deletions(-)
===================================================================
@@ -1,21 +1,22 @@
-//      geanypg.h
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
+/*      geanypg.h
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
 
 
 #include <stdio.h>
@@ -53,7 +54,7 @@ enum
 extern GeanyData       *geany_data;
 extern GeanyFunctions  *geany_functions;
 
-// auxiliary functions (helper_functions.c)
+/* auxiliary functions (helper_functions.c) */
 void geanypg_init_ed(encrypt_data * ed);
 int geanypg_get_keys(encrypt_data * ed);
 int geanypg_get_secret_keys(encrypt_data * ed);
@@ -61,23 +62,23 @@ enum
 void geanypg_load_buffer(gpgme_data_t * buffer);
 void geanypg_write_file(FILE * file);
 
-// some more auxiliary functions (verify_aux.c)
+/* some more auxiliary functions (verify_aux.c) */
 void geanypg_handle_signatures(encrypt_data * ed, int need_error);
 void geanypg_check_sig(encrypt_data * ed, gpgme_signature_t sig);
 const char * geanypg_validity(gpgme_validity_t validity);
 
-// dialogs
+/* dialogs */
 int geanypg_encrypt_selection_dialog(encrypt_data * ed, gpgme_key_t ** selected, int * sign);
 int geanypg_sign_selection_dialog(encrypt_data * ed);
 gpgme_error_t geanypg_show_err_msg(gpgme_error_t err);
 
-// callback functions
+/* callback functions */
 void geanypg_encrypt_cb(GtkMenuItem * menuitem, gpointer user_data);
 void geanypg_sign_cb(GtkMenuItem * menuitem, gpointer user_data);
 void geanypg_decrypt_cb(GtkMenuItem * menuitem, gpointer user_data);
 void geanypg_verify_cb(GtkMenuItem * menuitem, gpointer user_data);
 
-// pinentry callback
+/* pinentry callback */
 gpgme_error_t geanypg_passphrase_cb(void *hook,
                                     const char *uid_hint,
                                     const char *passphrase_info,


Modified: geanypg/src/helper_functions.c
85 files changed, 44 insertions(+), 41 deletions(-)
===================================================================
@@ -1,21 +1,22 @@
-//      helper_functions.c
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
+/*      helper_functions.c
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
 
 
 #include "geanypg.h"
@@ -32,9 +33,9 @@ int geanypg_get_keys(encrypt_data * ed)
 {
     gpgme_error_t err;
     unsigned long size = SIZE;
-    //initialize idx to 0
+    /* initialize idx to 0 */
     unsigned long idx = 0;
-    //allocate array of size 1N
+    /* allocate array of size 1N */
     gpgme_key_t * key;
     ed->key_array = (gpgme_key_t*) malloc(SIZE * sizeof(gpgme_key_t));
     err = gpgme_op_keylist_start(ed->ctx, NULL, 0);
@@ -44,12 +45,12 @@ int geanypg_get_keys(encrypt_data * ed)
         err = gpgme_op_keylist_next(ed->ctx, key);
         if (err)
             break;
-        if ((*key)->revoked  || // key cannot be used
+        if ((*key)->revoked  || /* key cannot be used */
             (*key)->expired  ||
             (*key)->disabled ||
             (*key)->invalid)
            gpgme_key_unref(*key);
-        else // key is valid
+        else /* key is valid */
             ++idx;
         if (idx >= size)
         {
@@ -70,9 +71,9 @@ int geanypg_get_secret_keys(encrypt_data * ed)
 {
     gpgme_error_t err;
     unsigned long size = SIZE;
-    //initialize idx to 0
+    /* initialize idx to 0 */
     unsigned long idx = 0;
-    //allocate array of size 1N
+    /* allocate array of size 1N */
     gpgme_key_t * key;
     ed->skey_array = (gpgme_key_t*) malloc(SIZE * sizeof(gpgme_key_t));
     err = gpgme_op_keylist_start(ed->ctx, NULL, 1);
@@ -82,12 +83,12 @@ int geanypg_get_secret_keys(encrypt_data * ed)
         err = gpgme_op_keylist_next(ed->ctx, key);
         if (err)
             break;
-        if ((*key)->revoked  || // key cannot be used
+        if ((*key)->revoked  || /* key cannot be used */
             (*key)->expired  ||
             (*key)->disabled ||
             (*key)->invalid)
            gpgme_key_unref(*key);
-        else // key is valid
+        else /* key is valid */
             ++idx;
         if (idx >= size)
         {
@@ -130,14 +131,11 @@ void geanypg_release_keys(encrypt_data * ed)
 
 void geanypg_load_buffer(gpgme_data_t * buffer)
 {
-    //gpgme_data_new_from_mem(buffer, text, size, 0);
+    /* gpgme_data_new_from_mem(buffer, text, size, 0); */
     GeanyDocument * doc = document_get_current();
-    //SCI_GETSELECTIONSTART-SCI_GETSELECTIONEND
     char * data = NULL;
-    unsigned long sstart = scintilla_send_message(doc->editor->sci, SCI_GETSELECTIONSTART, 0, 0);
-    unsigned long send = scintilla_send_message(doc->editor->sci, SCI_GETSELECTIONEND, 0, 0);
     unsigned long size = 0;
-    if (sstart - send)
+    if (sci_has_selection(doc->editor->sci))
     {
         size = scintilla_send_message(doc->editor->sci, SCI_GETSELTEXT, 0, 0);
         data = (char *) malloc(size + 1);
@@ -151,29 +149,34 @@ void geanypg_load_buffer(gpgme_data_t * buffer)
         scintilla_send_message(doc->editor->sci, SCI_GETTEXT, (uptr_t)(size + 1), (sptr_t)data);
         gpgme_data_new_from_mem(buffer, data, size, 1);
     }
-    if (data) // if there is no text data may still be NULL
+    if (data) /* if there is no text data may still be NULL */
         free(data);
     gpgme_data_set_encoding(*buffer, GPGME_DATA_ENCODING_BINARY);
 }
 
 void geanypg_write_file(FILE * file)
 {
-    unsigned bufsize = 2048;
+#define BUFSIZE 2048
+
     unsigned long size;
-    char buffer[bufsize];
+    char buffer[BUFSIZE] = {0};
     GeanyDocument * doc = document_get_current();
-    if (abs(sci_get_selection_start(doc->editor->sci) - sci_get_selection_end(doc->editor->sci)))
-    {   // replace selected text
-        // clear selection, cursor should be at the end or beginneng of the selection
+    sci_start_undo_action(doc->editor->sci);
+    if (sci_has_selection(doc->editor->sci))
+    {   /* replace selected text
+         * clear selection, cursor should be at the end or beginneng of the selection */
         scintilla_send_message(doc->editor->sci, SCI_REPLACESEL, 0, (sptr_t)"");
-        while ((size = fread(buffer, 1, bufsize, file)))
-            // add at the cursor
+        while ((size = fread(buffer, 1, BUFSIZE, file)))
+            /* add at the cursor */
             scintilla_send_message(doc->editor->sci, SCI_ADDTEXT, (uptr_t) size, (sptr_t) buffer);
     }
     else
-    {   //replace complete document
+    {   /* replace complete document */
         scintilla_send_message(doc->editor->sci, SCI_CLEARALL, 0, 0);
-        while ((size = fread(buffer, 1, bufsize, file)))
+        while ((size = fread(buffer, 1, BUFSIZE, file)))
             scintilla_send_message(doc->editor->sci, SCI_APPENDTEXT, (uptr_t) size, (sptr_t) buffer);
     }
+    sci_end_undo_action(doc->editor->sci);
+
+#undef BUFSIZE
 }


Modified: geanypg/src/key_selection_dialog.c
72 files changed, 37 insertions(+), 35 deletions(-)
===================================================================
@@ -1,23 +1,24 @@
-//      key_selection_dialog.c
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
-
-// something about premature optimization, it still needs to be done
+/*      key_selection_dialog.c
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
+
+/* something about premature optimization, it still needs to be done */
 
 #include "geanypg.h"
 
@@ -69,14 +70,14 @@ static GtkListStore * geanypg_makelist(gpgme_key_t * key_array, unsigned long nk
     {
         char * name = (key_array[idx]->uids && key_array[idx]->uids->name) ? key_array[idx]->uids->name : &empty_string;
         char * email = (key_array[idx]->uids && key_array[idx]->uids->email) ? key_array[idx]->uids->email : &empty_string;
-        char buffer[strlen(name) + strlen(email) + 7];
-        sprintf(buffer, "%s    <%s>", name, email);
+        gchar * buffer = g_strdup_printf("%s    <%s>", name, email);
         gtk_list_store_append(list, &iter);
         gtk_list_store_set(list, &iter,
                            TOGGLE_COLUMN, FALSE,
                            RECIPIENT_COLUMN, buffer,
                            KEYID_COLUMN, key_array[idx]->subkeys->keyid,
                            -1);
+        g_free(buffer);
     }
     return list;
 }
@@ -96,7 +97,7 @@ static GtkWidget * geanypg_listview(GtkListStore * list, listdata * data)
     GtkTreeViewColumn * column;
     GtkCellRenderer * togglerenderer, * textrenderer;
     GtkWidget * listview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(list));
-    // checkbox column
+    /* checkbox column */
     togglerenderer = gtk_cell_renderer_toggle_new();
     g_signal_connect(G_OBJECT(togglerenderer), "toggled", G_CALLBACK(geanypg_toggled_cb), NULL);
     column = gtk_tree_view_column_new_with_attributes("?",
@@ -107,7 +108,7 @@ static GtkWidget * geanypg_listview(GtkListStore * list, listdata * data)
     data->store = list;
     data->column = TOGGLE_COLUMN;
     g_signal_connect(G_OBJECT(togglerenderer), "toggled", G_CALLBACK(geanypg_toggled_cb), (gpointer) data);
-    // recipient column
+    /* recipient column */
     textrenderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes("recipient",
                                                       textrenderer,
@@ -115,7 +116,7 @@ static GtkWidget * geanypg_listview(GtkListStore * list, listdata * data)
                                                       NULL);
     gtk_tree_view_column_set_resizable(column, TRUE);
     gtk_tree_view_append_column(GTK_TREE_VIEW(listview), column);
-    // keyid column
+    /* keyid column */
     column = gtk_tree_view_column_new_with_attributes("keyid",
                                                       textrenderer,
                                                       "text", KEYID_COLUMN,
@@ -134,10 +135,11 @@ int geanypg_encrypt_selection_dialog(encrypt_data * ed, gpgme_key_t ** selected,
     GtkTreeIter iter;
     listdata data;
     gboolean active;
+    GtkListStore * list;
 
     *sign = 0;
 
-    GtkListStore * list = geanypg_makelist(ed->key_array, ed->nkeys, 0);
+    list = geanypg_makelist(ed->key_array, ed->nkeys, 0);
     listview = geanypg_listview(list, &data);
     scrollwin = gtk_scrolled_window_new(NULL, NULL);
     gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollwin),
@@ -153,13 +155,13 @@ int geanypg_encrypt_selection_dialog(encrypt_data * ed, gpgme_key_t ** selected,
     gtk_box_pack_start(GTK_BOX(contentarea), combobox, FALSE, FALSE, 0);
 
 
-    // add ok and cancel buttons
+    /* add ok and cancel buttons */
     gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
     gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
 
     gtk_window_set_title(GTK_WINDOW(dialog), _("Select recipients"));
     gtk_widget_show_all(dialog);
-    // make sure dialog is destroyed when user responds
+    /* make sure dialog is destroyed when user responds */
     response = gtk_dialog_run(GTK_DIALOG(dialog));
     if (response == GTK_RESPONSE_CANCEL)
     {
@@ -170,12 +172,12 @@ int geanypg_encrypt_selection_dialog(encrypt_data * ed, gpgme_key_t ** selected,
     if (idx && idx <= ed->nskeys)
     {
         *sign = 1;
-        gpgme_signers_add(ed->ctx, ed->skey_array[idx - 1]); // -1 because the first option is `None'
+        gpgme_signers_add(ed->ctx, ed->skey_array[idx - 1]); /* -1 because the first option is `None' */
     }
-    // try to loop all the keys in the list
-    // if they are active (the user checked the checkbox in front of the key)
-    // add it to the selected array, finaly make sure that the array
-    // is NULL terminated
+    /* try to loop all the keys in the list
+     * if they are active (the user checked the checkbox in front of the key)
+     * add it to the selected array, finaly make sure that the array
+     * is NULL terminated */
     if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list), &iter))
     {
         capacity = SIZE;
@@ -222,13 +224,13 @@ int geanypg_sign_selection_dialog(encrypt_data * ed)
     gtk_box_pack_start(GTK_BOX(contentarea), gtk_label_new(_("Choose a key to sign with:")), FALSE, FALSE, 5);
     gtk_box_pack_start(GTK_BOX(contentarea), combobox, TRUE, TRUE, 0);
 
-    // add ok and cancel buttons
+    /* add ok and cancel buttons */
     gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
     gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
 
     gtk_widget_show_all(dialog);
     gtk_window_set_title(GTK_WINDOW(dialog), _("Select signer"));
-    // make sure dialog is destroyed when user responds
+    /* make sure dialog is destroyed when user responds */
     response = gtk_dialog_run(GTK_DIALOG(dialog));
     if (response == GTK_RESPONSE_CANCEL)
     {


Modified: geanypg/src/pinentry.c
68 files changed, 36 insertions(+), 32 deletions(-)
===================================================================
@@ -1,21 +1,22 @@
-//      pinentry.c
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
+/*      pinentry.c
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
 
 #include "geanypg.h"
 
@@ -44,17 +45,18 @@ static void geanypg_read_till(int fd, char delim)
     while (1)
     {
         char val;
-        unsigned long rv = read(fd, &val, 1);
-        if (!rv || val == delim)
+        ssize_t rv = read(fd, &val, 1);
+        if (rv <= 0 || val == delim)
             break;
     }
 }
 
 static int geanypg_read(int fd, char delim, int max, char * buffer)
 {
-    int idx, rv = 1;
+    int idx;
+    ssize_t rv = 1;
     char ch = 0;
-    for (idx = 0; (idx < max - 1) && rv && ch != delim; ++idx)
+    for (idx = 0; (idx < max - 1) && rv > 0 && ch != delim; ++idx)
     {
         rv = read(fd, &ch, 1);
         buffer[idx] = ch;
@@ -72,7 +74,7 @@ gpgme_error_t geanypg_passphrase_cb(void * hook,
     int inpipe[2];
     int childpid;
     int status;
-    char readbuffer[2080]; // pinentry should at least support passphrases of up to 2048 characters
+    char readbuffer[2080] = {0}; /* pinentry should at least support passphrases of up to 2048 characters */
     FILE * childin;
 
     if (pipe(outpipe))
@@ -88,9 +90,11 @@ gpgme_error_t geanypg_passphrase_cb(void * hook,
 
     childpid = fork();
     if (!childpid)
-    { // pinentry
+    { /* pinentry */
         char arg1[] = "pinentry";
-        char * argv[] = {arg1, NULL};
+        char * argv[] = {NULL, NULL};
+
+        argv[0] = arg1;
 
         close(outpipe[READ]);
         dup2(outpipe[WRITE], STDOUT_FILENO);
@@ -99,16 +103,16 @@ gpgme_error_t geanypg_passphrase_cb(void * hook,
         dup2(inpipe[READ], STDIN_FILENO);
 
         execvp(*argv, argv);
-        // shouldn't get here
+        /* shouldn't get here */
         fprintf(stderr, "GeanyPG: %s\n%s\n", _("Could not use pinentry."), strerror(errno));
-        exit(1); // kill the child
+        exit(1); /* kill the child */
     }
-    // GeanpyPG
+    /* GeanpyPG */
     close(outpipe[WRITE]);
     close(inpipe[READ]);
     childin = fdopen(inpipe[WRITE], "w");
 
-    // To understand what's happening here, read the pinentry documentation
+    /* To understand what's happening here, read the pinentry documentation */
     geanypg_read(outpipe[READ], ' ', 2049, readbuffer);
     if (strncmp(readbuffer, "OK", 3))
     {
@@ -119,7 +123,7 @@ gpgme_error_t geanypg_passphrase_cb(void * hook,
         close(fd);
         return gpgme_err_make(GPG_ERR_SOURCE_PINENTRY, GPG_ERR_GENERAL);
     }
-    geanypg_read_till(outpipe[READ], '\n'); // read the rest of the first line after OK
+    geanypg_read_till(outpipe[READ], '\n'); /* read the rest of the first line after OK */
     fprintf(childin, "SETTITLE GeanyPG %s\n", _("Passphrase entry"));
     fflush(childin);
     geanypg_read_till(outpipe[READ], '\n');
@@ -143,8 +147,8 @@ gpgme_error_t geanypg_passphrase_cb(void * hook,
         while (1)
         {
             char val;
-            register unsigned long rv = read(outpipe[READ], &val, 1);
-            if (!rv || val == '\n')
+            register ssize_t rv = read(outpipe[READ], &val, 1);
+            if (rv <= 0 || val == '\n')
             {
                 while (!write(fd, "\n", 1));
                 break;


Modified: geanypg/src/sign_cb.c
46 files changed, 24 insertions(+), 22 deletions(-)
===================================================================
@@ -1,26 +1,27 @@
-//      sign_cb.c
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
+/*      sign_cb.c
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
 
 
 #include "geanypg.h"
 
-void geanypg_sign(encrypt_data * ed)
+static void geanypg_sign(encrypt_data * ed)
 {
     gpgme_data_t plain, cipher;
     gpgme_error_t err;
@@ -47,7 +48,7 @@ void geanypg_sign(encrypt_data * ed)
     }
 
     fclose(tempfile);
-    // release buffers
+    /* release buffers */
     gpgme_data_release(plain);
     gpgme_data_release(cipher);
 }
@@ -55,13 +56,14 @@ void geanypg_sign(encrypt_data * ed)
 void geanypg_sign_cb(GtkMenuItem * menuitem, gpointer user_data)
 {
     encrypt_data ed;
+    gpgme_error_t err;
     geanypg_init_ed(&ed);
-    gpgme_error_t err = gpgme_new(&ed.ctx);
+    err = gpgme_new(&ed.ctx);
     if (err && geanypg_show_err_msg(err))
         return;
     ed.key_array = NULL;
     ed.nkeys = 0;
-    //gpgme_set_armor(ed.ctx, 1);
+    /*gpgme_set_armor(ed.ctx, 1);*/
     gpgme_set_passphrase_cb(ed.ctx, geanypg_passphrase_cb, NULL);
     if (geanypg_get_secret_keys(&ed))
     {


Modified: geanypg/src/verify_aux.c
56 files changed, 29 insertions(+), 27 deletions(-)
===================================================================
@@ -1,27 +1,28 @@
-//      verify_aux.c
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
+/*      verify_aux.c
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
 
 
 #include "geanypg.h"
 
 
-void geanypg_get_keys_with_fp(encrypt_data * ed, char * buffer)
+static void geanypg_get_keys_with_fp(encrypt_data * ed, char * buffer)
 {
     unsigned long idx, found = 0;
     char empty_string = '\0';
@@ -47,7 +48,7 @@ void geanypg_get_keys_with_fp(encrypt_data * ed, char * buffer)
                     sprintf(buffer, "%s <%s>", name, email);
                 else
                 {
-                    char tmp[62];
+                    char tmp[62] = {0};
                     strncpy(tmp, buffer, 41);
                     sprintf(buffer, "%s %s", _("a key with fingerprint"), tmp);
                 }
@@ -74,7 +75,7 @@ const char * geanypg_validity(gpgme_validity_t validity)
 }
 
 static char * geanypg_summary(gpgme_sigsum_t summary, char * buffer)
-{ // buffer should be more than 105 bytes long
+{ /* buffer should be more than 105 bytes long */
   if (summary & GPGME_SIGSUM_VALID)       strcat(buffer, _(" valid"));
   if (summary & GPGME_SIGSUM_GREEN)       strcat(buffer, _(" green"));
   if (summary & GPGME_SIGSUM_RED)         strcat(buffer, _(" red"));
@@ -106,11 +107,11 @@ static char * geanypg_result(gpgme_signature_t sig)
       "other flags:%s%s\n"
       "notations .: %s\n");
     char * buffer;
-    char summary[128];
+    char summary[128] = {0};
     const char * pubkey = gpgme_pubkey_algo_name(sig->pubkey_algo);
     const char * hash = gpgme_hash_algo_name(sig->hash_algo);
-    char created[64];
-    char expires[64];
+    char created[64] = {0};
+    char expires[64] = {0};
     size_t buffer_size;
     if (sig->timestamp)
         strncpy(created, ctime((time_t*)&sig->timestamp), 64);
@@ -136,7 +137,7 @@ static char * geanypg_result(gpgme_signature_t sig)
         strlen(sig->pka_trust == 0 ? _("n/a") : sig->pka_trust == 1 ? _("bad") : sig->pka_trust == 2 ? _("okay"): _("RFU")) +
         strlen(sig->wrong_key_usage ? _(" wrong-key-usage") : "") +
         strlen(sig->chain_model ? _(" chain-model") : "") +
-        strlen(sig->notations ? _("yes") : _("no")) + 1; // and a trailing \0
+        strlen(sig->notations ? _("yes") : _("no")) + 1; /* and a trailing \0 */
 
     buffer = (char *)calloc(buffer_size, 1);
     memset(summary, 0, 128);
@@ -160,12 +161,13 @@ void geanypg_check_sig(encrypt_data * ed, gpgme_signature_t sig)
 {
     GtkWidget * dialog;
     gpgme_sigsum_t summary;
-    char buffer[512];
+    char buffer[512] = {0};
+    char * result;
     strncpy(buffer, sig->fpr, 40);
     buffer[40] = 0;
     geanypg_get_keys_with_fp(ed, buffer);
     summary = sig->summary;
-    char * result = geanypg_result(sig);
+    result = geanypg_result(sig);
 
     dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(geany->main_widgets->window),
                                                 GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,


Modified: geanypg/src/verify_cb.c
44 files changed, 23 insertions(+), 21 deletions(-)
===================================================================
@@ -1,25 +1,26 @@
-//      verify_cb.c
-//
-//      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
-//
-//      This program is free software; you can redistribute it and/or modify
-//      it under the terms of the GNU General Public License as published by
-//      the Free Software Foundation; either version 2 of the License, or
-//      (at your option) any later version.
-//
-//      This program is distributed in the hope that it will be useful,
-//      but WITHOUT ANY WARRANTY; without even the implied warranty of
-//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//      GNU General Public License for more details.
-//
-//      You should have received a copy of the GNU General Public License
-//      along with this program; if not, write to the Free Software
-//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-//      MA 02110-1301, USA.
+/*      verify_cb.c
+ *
+ *      Copyright 2011 Hans Alves <alves.h88 at gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
 
 #include "geanypg.h"
 
-char * geanypg_choose_sig()
+static char * geanypg_choose_sig(void)
 {
     int response;
     char * file = NULL;
@@ -37,7 +38,7 @@ char * geanypg_choose_sig()
     return file;
 }
 
-void geanypg_verify(encrypt_data * ed, char * signame)
+static void geanypg_verify(encrypt_data * ed, char * signame)
 {
     gpgme_data_t sig, text;
     gpgme_error_t err;
@@ -61,8 +62,9 @@ void geanypg_verify_cb(GtkMenuItem * menuitem, gpointer user_data)
 {
     char * sigfile = NULL;
     encrypt_data ed;
+    gpgme_error_t err;
     geanypg_init_ed(&ed);
-    gpgme_error_t err = gpgme_new(&ed.ctx);
+    err = gpgme_new(&ed.ctx);
     if (err && geanypg_show_err_msg(err))
         return;
     gpgme_set_protocol(ed.ctx, GPGME_PROTOCOL_OpenPGP);


@@ Diff output truncated at 100000 characters. @@


--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).



More information about the Plugins-Commits mailing list